From: Stéphane Glondu Date: Sun, 12 Oct 2025 09:55:19 +0000 (+0200) Subject: New upstream version 5.4.0 X-Git-Tag: archive/raspbian/5.4.0-1+rpi1^2~19^2 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/success//%22mailto:kde%40ewsoftware.de/%22/%22http:/www.example.com/cgi/success/%22mailto:kde%40ewsoftware.de/%22?a=commitdiff_plain;h=43429906b89d8aed686a2552baab32351785eca6;p=ocaml.git New upstream version 5.4.0 --- diff --git a/.depend b/.depend index ad323820..682adc0a 100644 --- a/.depend +++ b/.depend @@ -247,27 +247,36 @@ parsing/ast_helper.cmi : \ parsing/ast_invariants.cmo : \ parsing/syntaxerr.cmi \ parsing/parsetree.cmi \ + parsing/parse.cmi \ parsing/longident.cmi \ + parsing/location.cmi \ parsing/builtin_attributes.cmi \ parsing/asttypes.cmi \ + parsing/ast_mapper.cmi \ parsing/ast_iterator.cmi \ parsing/ast_invariants.cmi parsing/ast_invariants.cmx : \ parsing/syntaxerr.cmx \ parsing/parsetree.cmi \ + parsing/parse.cmx \ parsing/longident.cmx \ + parsing/location.cmx \ parsing/builtin_attributes.cmx \ parsing/asttypes.cmx \ + parsing/ast_mapper.cmx \ parsing/ast_iterator.cmx \ parsing/ast_invariants.cmi parsing/ast_invariants.cmi : \ - parsing/parsetree.cmi + parsing/parsetree.cmi \ + parsing/ast_iterator.cmi parsing/ast_iterator.cmo : \ parsing/parsetree.cmi \ + parsing/longident.cmi \ parsing/location.cmi \ parsing/ast_iterator.cmi parsing/ast_iterator.cmx : \ parsing/parsetree.cmi \ + parsing/longident.cmx \ parsing/location.cmx \ parsing/ast_iterator.cmi parsing/ast_iterator.cmi : \ @@ -437,11 +446,14 @@ parsing/location.cmi : \ utils/format_doc.cmi parsing/longident.cmo : \ utils/misc.cmi \ + parsing/location.cmi \ parsing/longident.cmi parsing/longident.cmx : \ utils/misc.cmx \ + parsing/location.cmx \ parsing/longident.cmi -parsing/longident.cmi : +parsing/longident.cmi : \ + parsing/location.cmi parsing/parse.cmo : \ parsing/syntaxerr.cmi \ parsing/pprintast.cmi \ @@ -632,6 +644,7 @@ typing/ctype.cmo : \ utils/format_doc.cmi \ typing/errortrace.cmi \ typing/env.cmi \ + typing/data_types.cmi \ utils/clflags.cmi \ typing/btype.cmi \ parsing/asttypes.cmi \ @@ -650,6 +663,7 @@ typing/ctype.cmx : \ utils/format_doc.cmx \ typing/errortrace.cmx \ typing/env.cmx \ + typing/data_types.cmx \ utils/clflags.cmx \ typing/btype.cmx \ parsing/asttypes.cmx \ @@ -658,18 +672,39 @@ typing/ctype.cmi : \ typing/types.cmi \ typing/type_immediacy.cmi \ typing/path.cmi \ - parsing/longident.cmi \ parsing/location.cmi \ typing/ident.cmi \ typing/errortrace.cmi \ typing/env.cmi \ + typing/data_types.cmi \ typing/btype.cmi \ parsing/asttypes.cmi +typing/data_types.cmo : \ + typing/types.cmi \ + typing/path.cmi \ + parsing/parsetree.cmi \ + parsing/location.cmi \ + parsing/asttypes.cmi \ + typing/data_types.cmi +typing/data_types.cmx : \ + typing/types.cmx \ + typing/path.cmx \ + parsing/parsetree.cmi \ + parsing/location.cmx \ + parsing/asttypes.cmx \ + typing/data_types.cmi +typing/data_types.cmi : \ + typing/types.cmi \ + typing/path.cmi \ + parsing/parsetree.cmi \ + parsing/location.cmi \ + parsing/asttypes.cmi typing/datarepr.cmo : \ typing/types.cmi \ typing/path.cmi \ parsing/location.cmi \ typing/ident.cmi \ + typing/data_types.cmi \ typing/btype.cmi \ parsing/asttypes.cmi \ typing/datarepr.cmi @@ -678,6 +713,7 @@ typing/datarepr.cmx : \ typing/path.cmx \ parsing/location.cmx \ typing/ident.cmx \ + typing/data_types.cmx \ typing/btype.cmx \ parsing/asttypes.cmx \ typing/datarepr.cmi @@ -685,7 +721,8 @@ typing/datarepr.cmi : \ parsing/unit_info.cmi \ typing/types.cmi \ typing/path.cmi \ - typing/ident.cmi + typing/ident.cmi \ + typing/data_types.cmi typing/env.cmo : \ utils/warnings.cmi \ parsing/unit_info.cmi \ @@ -705,6 +742,7 @@ typing/env.cmo : \ typing/ident.cmi \ utils/format_doc.cmi \ typing/datarepr.cmi \ + typing/data_types.cmi \ file_formats/cmi_format.cmi \ utils/clflags.cmi \ parsing/builtin_attributes.cmi \ @@ -730,6 +768,7 @@ typing/env.cmx : \ typing/ident.cmx \ utils/format_doc.cmx \ typing/datarepr.cmx \ + typing/data_types.cmx \ file_formats/cmi_format.cmx \ utils/clflags.cmx \ parsing/builtin_attributes.cmx \ @@ -749,6 +788,7 @@ typing/env.cmi : \ utils/load_path.cmi \ typing/ident.cmi \ utils/format_doc.cmi \ + typing/data_types.cmi \ file_formats/cmi_format.cmi \ parsing/asttypes.cmi typing/envaux.cmo : \ @@ -838,6 +878,7 @@ typing/gprinttyp.cmo : \ typing/types.cmi \ typing/path.cmi \ parsing/longident.cmi \ + typing/ident.cmi \ utils/format_doc.cmi \ utils/clflags.cmi \ parsing/asttypes.cmi \ @@ -847,6 +888,7 @@ typing/gprinttyp.cmx : \ typing/types.cmx \ typing/path.cmx \ parsing/longident.cmx \ + typing/ident.cmx \ utils/format_doc.cmx \ utils/clflags.cmx \ parsing/asttypes.cmx \ @@ -998,6 +1040,7 @@ typing/includemod.cmx : \ typing/includemod.cmi : \ typing/types.cmi \ typing/typedtree.cmi \ + typing/subst.cmi \ typing/shape.cmi \ typing/path.cmi \ parsing/longident.cmi \ @@ -1010,6 +1053,7 @@ typing/includemod.cmi : \ typing/includemod_errorprinter.cmo : \ typing/types.cmi \ typing/typedtree.cmi \ + typing/subst.cmi \ typing/printtyp.cmi \ typing/primitive.cmi \ typing/path.cmi \ @@ -1029,6 +1073,7 @@ typing/includemod_errorprinter.cmo : \ typing/includemod_errorprinter.cmx : \ typing/types.cmx \ typing/typedtree.cmx \ + typing/subst.cmx \ typing/printtyp.cmx \ typing/primitive.cmx \ typing/path.cmx \ @@ -1055,7 +1100,6 @@ typing/mtype.cmo : \ typing/types.cmi \ typing/subst.cmi \ typing/path.cmi \ - parsing/location.cmi \ typing/ident.cmi \ typing/env.cmi \ typing/ctype.cmi \ @@ -1067,7 +1111,6 @@ typing/mtype.cmx : \ typing/types.cmx \ typing/subst.cmx \ typing/path.cmx \ - parsing/location.cmx \ typing/ident.cmx \ typing/env.cmx \ typing/ctype.cmx \ @@ -1178,6 +1221,7 @@ typing/parmatch.cmo : \ typing/ident.cmi \ utils/format_doc.cmi \ typing/env.cmi \ + typing/data_types.cmi \ typing/ctype.cmi \ typing/btype.cmi \ parsing/asttypes.cmi \ @@ -1199,6 +1243,7 @@ typing/parmatch.cmx : \ typing/ident.cmx \ utils/format_doc.cmx \ typing/env.cmx \ + typing/data_types.cmx \ typing/ctype.cmx \ typing/btype.cmx \ parsing/asttypes.cmx \ @@ -1209,6 +1254,7 @@ typing/parmatch.cmi : \ parsing/parsetree.cmi \ parsing/location.cmi \ typing/env.cmi \ + typing/data_types.cmi \ parsing/asttypes.cmi typing/path.cmo : \ parsing/lexer.cmi \ @@ -1230,6 +1276,7 @@ typing/patterns.cmo : \ parsing/location.cmi \ typing/ident.cmi \ typing/env.cmi \ + typing/data_types.cmi \ typing/ctype.cmi \ parsing/asttypes.cmi \ typing/patterns.cmi @@ -1240,6 +1287,7 @@ typing/patterns.cmx : \ parsing/location.cmx \ typing/ident.cmx \ typing/env.cmx \ + typing/data_types.cmx \ typing/ctype.cmx \ parsing/asttypes.cmx \ typing/patterns.cmi @@ -1248,6 +1296,7 @@ typing/patterns.cmi : \ typing/typedtree.cmi \ parsing/longident.cmi \ typing/ident.cmi \ + typing/data_types.cmi \ parsing/asttypes.cmi typing/persistent_env.cmo : \ utils/warnings.cmi \ @@ -1330,17 +1379,17 @@ typing/primitive.cmi : \ typing/outcometree.cmi \ parsing/location.cmi typing/printpat.cmo : \ - typing/types.cmi \ typing/typedtree.cmi \ typing/ident.cmi \ utils/format_doc.cmi \ + typing/data_types.cmi \ parsing/asttypes.cmi \ typing/printpat.cmi typing/printpat.cmx : \ - typing/types.cmx \ typing/typedtree.cmx \ typing/ident.cmx \ utils/format_doc.cmx \ + typing/data_types.cmx \ parsing/asttypes.cmx \ typing/printpat.cmi typing/printpat.cmi : \ @@ -1413,6 +1462,7 @@ typing/rawprinttyp.cmo : \ typing/types.cmi \ parsing/pprintast.cmi \ typing/path.cmi \ + parsing/longident.cmi \ utils/format_doc.cmi \ parsing/asttypes.cmi \ typing/rawprinttyp.cmi @@ -1420,6 +1470,7 @@ typing/rawprinttyp.cmx : \ typing/types.cmx \ parsing/pprintast.cmx \ typing/path.cmx \ + parsing/longident.cmx \ utils/format_doc.cmx \ parsing/asttypes.cmx \ typing/rawprinttyp.cmi @@ -1528,6 +1579,7 @@ typing/subst.cmi : \ typing/tast_iterator.cmo : \ typing/typedtree.cmi \ parsing/parsetree.cmi \ + parsing/longident.cmi \ parsing/location.cmi \ typing/env.cmi \ parsing/asttypes.cmi \ @@ -1536,6 +1588,7 @@ typing/tast_iterator.cmo : \ typing/tast_iterator.cmx : \ typing/typedtree.cmx \ parsing/parsetree.cmi \ + parsing/longident.cmx \ parsing/location.cmx \ typing/env.cmx \ parsing/asttypes.cmx \ @@ -1549,6 +1602,7 @@ typing/tast_iterator.cmi : \ typing/tast_mapper.cmo : \ typing/typedtree.cmi \ parsing/parsetree.cmi \ + parsing/longident.cmi \ parsing/location.cmi \ typing/env.cmi \ parsing/asttypes.cmi \ @@ -1557,6 +1611,7 @@ typing/tast_mapper.cmo : \ typing/tast_mapper.cmx : \ typing/typedtree.cmx \ parsing/parsetree.cmi \ + parsing/longident.cmx \ parsing/location.cmx \ typing/env.cmx \ parsing/asttypes.cmx \ @@ -1680,6 +1735,7 @@ typing/typecore.cmo : \ typing/errortrace_report.cmi \ typing/errortrace.cmi \ typing/env.cmi \ + typing/data_types.cmi \ typing/ctype.cmi \ file_formats/cmt_format.cmi \ utils/clflags.cmi \ @@ -1717,6 +1773,7 @@ typing/typecore.cmx : \ typing/errortrace_report.cmx \ typing/errortrace.cmx \ typing/env.cmx \ + typing/data_types.cmx \ typing/ctype.cmx \ file_formats/cmt_format.cmx \ utils/clflags.cmx \ @@ -1736,6 +1793,7 @@ typing/typecore.cmi : \ typing/ident.cmi \ typing/errortrace.cmi \ typing/env.cmi \ + typing/data_types.cmi \ parsing/asttypes.cmi typing/typedecl.cmo : \ utils/warnings.cmi \ @@ -1768,6 +1826,7 @@ typing/typedecl.cmo : \ typing/errortrace_report.cmi \ typing/errortrace.cmi \ typing/env.cmi \ + typing/data_types.cmi \ typing/ctype.cmi \ utils/config.cmi \ utils/clflags.cmi \ @@ -1809,6 +1868,7 @@ typing/typedecl.cmx : \ typing/errortrace_report.cmx \ typing/errortrace.cmx \ typing/env.cmx \ + typing/data_types.cmx \ typing/ctype.cmx \ utils/config.cmx \ utils/clflags.cmx \ @@ -1832,7 +1892,6 @@ typing/typedecl.cmi : \ parsing/location.cmi \ typing/includecore.cmi \ typing/ident.cmi \ - utils/format_doc.cmi \ typing/errortrace.cmi \ typing/env.cmi \ parsing/asttypes.cmi @@ -1956,6 +2015,7 @@ typing/typedtree.cmo : \ parsing/location.cmi \ typing/ident.cmi \ typing/env.cmi \ + typing/data_types.cmi \ parsing/asttypes.cmi \ typing/typedtree.cmi typing/typedtree.cmx : \ @@ -1969,6 +2029,7 @@ typing/typedtree.cmx : \ parsing/location.cmx \ typing/ident.cmx \ typing/env.cmx \ + typing/data_types.cmx \ parsing/asttypes.cmx \ typing/typedtree.cmi typing/typedtree.cmi : \ @@ -1982,6 +2043,7 @@ typing/typedtree.cmi : \ parsing/location.cmi \ typing/ident.cmi \ typing/env.cmi \ + typing/data_types.cmi \ parsing/asttypes.cmi typing/typemod.cmo : \ utils/warnings.cmi \ @@ -2120,7 +2182,6 @@ typing/types.cmo : \ typing/path.cmi \ parsing/parsetree.cmi \ utils/misc.cmi \ - parsing/longident.cmi \ parsing/location.cmi \ utils/local_store.cmi \ typing/ident.cmi \ @@ -2134,7 +2195,6 @@ typing/types.cmx : \ typing/path.cmx \ parsing/parsetree.cmi \ utils/misc.cmx \ - parsing/longident.cmx \ parsing/location.cmx \ utils/local_store.cmx \ typing/ident.cmx \ @@ -2147,11 +2207,11 @@ typing/types.cmi : \ typing/primitive.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ - parsing/longident.cmi \ parsing/location.cmi \ typing/ident.cmi \ parsing/asttypes.cmi typing/typetexp.cmo : \ + utils/warnings.cmi \ typing/types.cmi \ typing/typedtree.cmi \ typing/printtyp.cmi \ @@ -2175,6 +2235,7 @@ typing/typetexp.cmo : \ parsing/ast_helper.cmi \ typing/typetexp.cmi typing/typetexp.cmx : \ + utils/warnings.cmx \ typing/types.cmx \ typing/typedtree.cmx \ typing/printtyp.cmx \ @@ -2204,7 +2265,6 @@ typing/typetexp.cmi : \ parsing/parsetree.cmi \ parsing/longident.cmi \ parsing/location.cmi \ - utils/format_doc.cmi \ typing/errortrace.cmi \ typing/env.cmi \ parsing/asttypes.cmi @@ -2943,10 +3003,12 @@ asmcomp/cmm_helpers.cmi : \ asmcomp/cmm_invariants.cmo : \ utils/numbers.cmi \ asmcomp/cmm.cmi \ + middle_end/backend_var.cmi \ asmcomp/cmm_invariants.cmi asmcomp/cmm_invariants.cmx : \ utils/numbers.cmx \ asmcomp/cmm.cmx \ + middle_end/backend_var.cmx \ asmcomp/cmm_invariants.cmi asmcomp/cmm_invariants.cmi : \ asmcomp/cmm.cmi @@ -4383,6 +4445,7 @@ lambda/lambda.cmo : \ typing/ident.cmi \ typing/env.cmi \ lambda/debuginfo.cmi \ + utils/config.cmi \ utils/clflags.cmi \ parsing/asttypes.cmi \ lambda/lambda.cmi @@ -4395,6 +4458,7 @@ lambda/lambda.cmx : \ typing/ident.cmx \ typing/env.cmx \ lambda/debuginfo.cmx \ + utils/config.cmx \ utils/clflags.cmx \ parsing/asttypes.cmx \ lambda/lambda.cmi @@ -4417,6 +4481,7 @@ lambda/matching.cmo : \ typing/primitive.cmi \ typing/predef.cmi \ typing/patterns.cmi \ + typing/path.cmi \ typing/parmatch.cmi \ utils/misc.cmi \ parsing/longident.cmi \ @@ -4425,6 +4490,7 @@ lambda/matching.cmo : \ typing/ident.cmi \ typing/env.cmi \ lambda/debuginfo.cmi \ + typing/data_types.cmi \ utils/clflags.cmi \ typing/btype.cmi \ parsing/asttypes.cmi \ @@ -4440,6 +4506,7 @@ lambda/matching.cmx : \ typing/primitive.cmx \ typing/predef.cmx \ typing/patterns.cmx \ + typing/path.cmx \ typing/parmatch.cmx \ utils/misc.cmx \ parsing/longident.cmx \ @@ -4448,6 +4515,7 @@ lambda/matching.cmx : \ typing/ident.cmx \ typing/env.cmx \ lambda/debuginfo.cmx \ + typing/data_types.cmx \ utils/clflags.cmx \ typing/btype.cmx \ parsing/asttypes.cmx \ @@ -4640,6 +4708,7 @@ lambda/translcore.cmo : \ utils/format_doc.cmi \ typing/env.cmi \ lambda/debuginfo.cmi \ + typing/data_types.cmi \ utils/config.cmi \ utils/clflags.cmi \ typing/btype.cmi \ @@ -4667,6 +4736,7 @@ lambda/translcore.cmx : \ utils/format_doc.cmx \ typing/env.cmx \ lambda/debuginfo.cmx \ + typing/data_types.cmx \ utils/config.cmx \ utils/clflags.cmx \ typing/btype.cmx \ @@ -4763,7 +4833,6 @@ lambda/translobj.cmi : \ typing/ident.cmi \ typing/env.cmi lambda/translprim.cmo : \ - typing/types.cmi \ typing/typeopt.cmi \ typing/typedtree.cmi \ typing/primitive.cmi \ @@ -4782,7 +4851,6 @@ lambda/translprim.cmo : \ parsing/asttypes.cmi \ lambda/translprim.cmi lambda/translprim.cmx : \ - typing/types.cmx \ typing/typeopt.cmx \ typing/typedtree.cmx \ typing/primitive.cmx \ @@ -4872,6 +4940,7 @@ file_formats/cmt_format.cmo : \ parsing/lexer.cmi \ typing/ident.cmi \ typing/env.cmi \ + typing/data_types.cmi \ utils/config.cmi \ utils/compression.cmi \ file_formats/cmi_format.cmi \ @@ -4895,6 +4964,7 @@ file_formats/cmt_format.cmx : \ parsing/lexer.cmx \ typing/ident.cmx \ typing/env.cmx \ + typing/data_types.cmx \ utils/config.cmx \ utils/compression.cmx \ file_formats/cmi_format.cmx \ @@ -4951,6 +5021,7 @@ middle_end/closure/closure.cmo : \ typing/env.cmi \ lambda/debuginfo.cmi \ middle_end/convert_primitives.cmi \ + utils/config.cmi \ middle_end/compilenv.cmi \ utils/clflags.cmi \ middle_end/clambda_primitives.cmi \ @@ -4973,6 +5044,7 @@ middle_end/closure/closure.cmx : \ typing/env.cmx \ lambda/debuginfo.cmx \ middle_end/convert_primitives.cmx \ + utils/config.cmx \ middle_end/compilenv.cmx \ utils/clflags.cmx \ middle_end/clambda_primitives.cmx \ @@ -5162,6 +5234,7 @@ middle_end/flambda/closure_conversion.cmo : \ middle_end/flambda/flambda.cmi \ lambda/debuginfo.cmi \ middle_end/convert_primitives.cmi \ + utils/config.cmi \ middle_end/compilation_unit.cmi \ middle_end/flambda/base_types/closure_origin.cmi \ middle_end/flambda/base_types/closure_id.cmi \ @@ -5190,6 +5263,7 @@ middle_end/flambda/closure_conversion.cmx : \ middle_end/flambda/flambda.cmx \ lambda/debuginfo.cmx \ middle_end/convert_primitives.cmx \ + utils/config.cmx \ middle_end/compilation_unit.cmx \ middle_end/flambda/base_types/closure_origin.cmx \ middle_end/flambda/base_types/closure_id.cmx \ @@ -7202,6 +7276,7 @@ driver/pparse.cmo : \ utils/clflags.cmi \ utils/ccomp.cmi \ parsing/ast_mapper.cmi \ + parsing/ast_iterator.cmi \ parsing/ast_invariants.cmi \ driver/pparse.cmi driver/pparse.cmx : \ @@ -7216,6 +7291,7 @@ driver/pparse.cmx : \ utils/clflags.cmx \ utils/ccomp.cmx \ parsing/ast_mapper.cmx \ + parsing/ast_iterator.cmx \ parsing/ast_invariants.cmx \ driver/pparse.cmi driver/pparse.cmi : \ @@ -7237,6 +7313,7 @@ toplevel/expunge.cmx : \ toplevel/expunge.cmi toplevel/expunge.cmi : toplevel/genprintval.cmo : \ + typing/untypeast.cmi \ typing/types.cmi \ parsing/syntaxerr.cmi \ typing/printtyp.cmi \ @@ -7248,15 +7325,19 @@ toplevel/genprintval.cmo : \ typing/oprint.cmi \ utils/misc.cmi \ parsing/longident.cmi \ + parsing/location.cmi \ parsing/lexer.cmi \ typing/ident.cmi \ utils/format_doc.cmi \ typing/env.cmi \ typing/datarepr.cmi \ + typing/data_types.cmi \ typing/ctype.cmi \ typing/btype.cmi \ + parsing/asttypes.cmi \ toplevel/genprintval.cmi toplevel/genprintval.cmx : \ + typing/untypeast.cmx \ typing/types.cmx \ parsing/syntaxerr.cmx \ typing/printtyp.cmx \ @@ -7268,13 +7349,16 @@ toplevel/genprintval.cmx : \ typing/oprint.cmx \ utils/misc.cmx \ parsing/longident.cmx \ + parsing/location.cmx \ parsing/lexer.cmx \ typing/ident.cmx \ utils/format_doc.cmx \ typing/env.cmx \ typing/datarepr.cmx \ + typing/data_types.cmx \ typing/ctype.cmx \ typing/btype.cmx \ + parsing/asttypes.cmx \ toplevel/genprintval.cmi toplevel/genprintval.cmi : \ typing/types.cmi \ @@ -7283,8 +7367,13 @@ toplevel/genprintval.cmi : \ typing/env.cmi toplevel/topcommon.cmo : \ parsing/unit_info.cmi \ + typing/typemod.cmi \ typing/typedtree.cmi \ + typing/typecore.cmi \ bytecomp/symtable.cmi \ + typing/shape_reduce.cmi \ + typing/shape.cmi \ + typing/printtyped.cmi \ parsing/printast.cmi \ typing/predef.cmi \ parsing/pprintast.cmi \ @@ -7299,6 +7388,7 @@ toplevel/topcommon.cmo : \ parsing/location.cmi \ utils/load_path.cmi \ parsing/lexer.cmi \ + typing/includemod.cmi \ typing/ident.cmi \ toplevel/genprintval.cmi \ utils/format_doc.cmi \ @@ -7314,8 +7404,13 @@ toplevel/topcommon.cmo : \ toplevel/topcommon.cmi toplevel/topcommon.cmx : \ parsing/unit_info.cmx \ + typing/typemod.cmx \ typing/typedtree.cmx \ + typing/typecore.cmx \ bytecomp/symtable.cmx \ + typing/shape_reduce.cmx \ + typing/shape.cmx \ + typing/printtyped.cmx \ parsing/printast.cmx \ typing/predef.cmx \ parsing/pprintast.cmx \ @@ -7330,6 +7425,7 @@ toplevel/topcommon.cmx : \ parsing/location.cmx \ utils/load_path.cmx \ parsing/lexer.cmx \ + typing/includemod.cmx \ typing/ident.cmx \ toplevel/genprintval.cmx \ utils/format_doc.cmx \ @@ -7375,6 +7471,7 @@ toplevel/topdirs.cmo : \ typing/ident.cmi \ typing/env.cmi \ bytecomp/dll.cmi \ + typing/data_types.cmi \ typing/ctype.cmi \ utils/config.cmi \ driver/compenv.cmi \ @@ -7401,6 +7498,7 @@ toplevel/topdirs.cmx : \ typing/ident.cmx \ typing/env.cmx \ bytecomp/dll.cmx \ + typing/data_types.cmx \ typing/ctype.cmx \ utils/config.cmx \ driver/compenv.cmx \ @@ -7462,22 +7560,33 @@ toplevel/toploop.cmi : \ toplevel/topmain.cmi : toplevel/topprinters.cmo : \ typing/types.cmi \ + typing/printtyp.cmi \ typing/predef.cmi \ typing/path.cmi \ + parsing/longident.cmi \ typing/ident.cmi \ + typing/env.cmi \ typing/ctype.cmi \ + typing/btype.cmi \ parsing/asttypes.cmi \ toplevel/topprinters.cmi toplevel/topprinters.cmx : \ typing/types.cmx \ + typing/printtyp.cmx \ typing/predef.cmx \ typing/path.cmx \ + parsing/longident.cmx \ typing/ident.cmx \ + typing/env.cmx \ typing/ctype.cmx \ + typing/btype.cmx \ parsing/asttypes.cmx \ toplevel/topprinters.cmi toplevel/topprinters.cmi : \ - typing/types.cmi + typing/types.cmi \ + typing/path.cmi \ + parsing/longident.cmi \ + typing/env.cmi toplevel/topstart.cmo : \ toplevel/topmain.cmi \ toplevel/topstart.cmi @@ -7493,16 +7602,11 @@ toplevel/trace.cmi : \ toplevel/byte/topeval.cmo : \ utils/warnings.cmi \ typing/types.cmi \ - typing/typemod.cmi \ typing/typedtree.cmi \ - typing/typecore.cmi \ lambda/translmod.cmi \ toplevel/topcommon.cmi \ bytecomp/symtable.cmi \ lambda/simplif.cmi \ - typing/shape_reduce.cmi \ - typing/shape.cmi \ - typing/printtyped.cmi \ typing/printtyp.cmi \ lambda/printlambda.cmi \ bytecomp/printinstr.cmi \ @@ -7515,7 +7619,6 @@ toplevel/byte/topeval.cmo : \ bytecomp/meta.cmi \ parsing/location.cmi \ utils/load_path.cmi \ - typing/includemod.cmi \ typing/ident.cmi \ typing/env.cmi \ bytecomp/emitcode.cmi \ @@ -7529,16 +7632,11 @@ toplevel/byte/topeval.cmo : \ toplevel/byte/topeval.cmx : \ utils/warnings.cmx \ typing/types.cmx \ - typing/typemod.cmx \ typing/typedtree.cmx \ - typing/typecore.cmx \ lambda/translmod.cmx \ toplevel/topcommon.cmx \ bytecomp/symtable.cmx \ lambda/simplif.cmx \ - typing/shape_reduce.cmx \ - typing/shape.cmx \ - typing/printtyped.cmx \ typing/printtyp.cmx \ lambda/printlambda.cmx \ bytecomp/printinstr.cmx \ @@ -7551,7 +7649,6 @@ toplevel/byte/topeval.cmx : \ bytecomp/meta.cmx \ parsing/location.cmx \ utils/load_path.cmx \ - typing/includemod.cmx \ typing/ident.cmx \ typing/env.cmx \ bytecomp/emitcode.cmx \ @@ -7632,16 +7729,11 @@ toplevel/byte/trace.cmi : \ toplevel/native/topeval.cmo : \ utils/warnings.cmi \ typing/types.cmi \ - typing/typemod.cmi \ typing/typedtree.cmi \ - typing/typecore.cmi \ lambda/translmod.cmi \ toplevel/native/tophooks.cmi \ toplevel/topcommon.cmi \ lambda/simplif.cmi \ - typing/shape_reduce.cmi \ - typing/shape.cmi \ - typing/printtyped.cmi \ typing/printtyp.cmi \ lambda/printlambda.cmi \ typing/predef.cmi \ @@ -7665,16 +7757,11 @@ toplevel/native/topeval.cmo : \ toplevel/native/topeval.cmx : \ utils/warnings.cmx \ typing/types.cmx \ - typing/typemod.cmx \ typing/typedtree.cmx \ - typing/typecore.cmx \ lambda/translmod.cmx \ toplevel/native/tophooks.cmx \ toplevel/topcommon.cmx \ lambda/simplif.cmx \ - typing/shape_reduce.cmx \ - typing/shape.cmx \ - typing/printtyped.cmx \ typing/printtyp.cmx \ lambda/printlambda.cmx \ typing/predef.cmx \ @@ -8053,10 +8140,12 @@ tools/ocamlcp.cmi : tools/ocamlcp_common.cmo : \ driver/main_args.cmi \ driver/compenv.cmi \ + utils/clflags.cmi \ tools/ocamlcp_common.cmi tools/ocamlcp_common.cmx : \ driver/main_args.cmx \ driver/compenv.cmx \ + utils/clflags.cmx \ tools/ocamlcp_common.cmi tools/ocamlcp_common.cmi : \ driver/main_args.cmi @@ -8099,12 +8188,14 @@ tools/ocamlprof.cmo : \ parsing/parsetree.cmi \ parsing/parse.cmi \ parsing/location.cmi \ + utils/clflags.cmi \ tools/ocamlprof.cmi tools/ocamlprof.cmx : \ utils/warnings.cmx \ parsing/parsetree.cmi \ parsing/parse.cmx \ parsing/location.cmx \ + utils/clflags.cmx \ tools/ocamlprof.cmi tools/ocamlprof.cmi : tools/ocamltex.cmo : \ @@ -8333,6 +8424,7 @@ debugger/debugger_lexer.cmi : \ debugger/debugger_parser.cmo : \ debugger/parser_aux.cmi \ parsing/longident.cmi \ + parsing/location.cmi \ debugger/int64ops.cmi \ debugger/input_handling.cmi \ debugger/debugcom.cmi \ @@ -8340,6 +8432,7 @@ debugger/debugger_parser.cmo : \ debugger/debugger_parser.cmx : \ debugger/parser_aux.cmi \ parsing/longident.cmx \ + parsing/location.cmx \ debugger/int64ops.cmx \ debugger/input_handling.cmx \ debugger/debugcom.cmx \ @@ -8461,7 +8554,6 @@ debugger/int64ops.cmx : \ debugger/int64ops.cmi : debugger/loadprinter.cmo : \ parsing/unit_info.cmi \ - typing/types.cmi \ toplevel/topprinters.cmi \ bytecomp/symtable.cmi \ debugger/printval.cmi \ @@ -8474,12 +8566,11 @@ debugger/loadprinter.cmo : \ utils/format_doc.cmi \ typing/env.cmi \ otherlibs/dynlink/dynlink.cmi \ - typing/ctype.cmi \ + debugger/debugcom.cmi \ file_formats/cmo_format.cmi \ debugger/loadprinter.cmi debugger/loadprinter.cmx : \ parsing/unit_info.cmx \ - typing/types.cmx \ toplevel/topprinters.cmx \ bytecomp/symtable.cmx \ debugger/printval.cmx \ @@ -8492,10 +8583,11 @@ debugger/loadprinter.cmx : \ utils/format_doc.cmx \ typing/env.cmx \ otherlibs/dynlink/dynlink.cmx \ - typing/ctype.cmx \ + debugger/debugcom.cmx \ file_formats/cmo_format.cmi \ debugger/loadprinter.cmi debugger/loadprinter.cmi : \ + toplevel/topprinters.cmi \ parsing/longident.cmi \ otherlibs/dynlink/dynlink.cmi debugger/main.cmo : \ @@ -8966,7 +9058,7 @@ ocamldoc/odoc_ast.cmo : \ ocamldoc/odoc_class.cmi \ parsing/location.cmi \ typing/ident.cmi \ - typing/btype.cmi \ + typing/data_types.cmi \ parsing/asttypes.cmi \ ocamldoc/odoc_ast.cmi ocamldoc/odoc_ast.cmx : \ @@ -8990,7 +9082,7 @@ ocamldoc/odoc_ast.cmx : \ ocamldoc/odoc_class.cmx \ parsing/location.cmx \ typing/ident.cmx \ - typing/btype.cmx \ + typing/data_types.cmx \ parsing/asttypes.cmx \ ocamldoc/odoc_ast.cmi ocamldoc/odoc_ast.cmi : \ @@ -9926,6 +10018,53 @@ ocamltest/builtin_variables.cmx : \ ocamltest/builtin_variables.cmi ocamltest/builtin_variables.cmi : \ ocamltest/variables.cmi +ocamltest/debugger_actions.cmo : \ + ocamltest/result.cmi \ + ocamltest/ocamltest_stdlib.cmi \ + ocamltest/ocaml_variables.cmi \ + ocamltest/ocaml_directories.cmi \ + ocamltest/ocaml_commands.cmi \ + utils/misc.cmi \ + ocamltest/environments.cmi \ + ocamltest/debugger_variables.cmi \ + ocamltest/debugger_flags.cmi \ + utils/clflags.cmi \ + ocamltest/builtin_variables.cmi \ + ocamltest/actions_helpers.cmi \ + ocamltest/actions.cmi \ + ocamltest/debugger_actions.cmi +ocamltest/debugger_actions.cmx : \ + ocamltest/result.cmx \ + ocamltest/ocamltest_stdlib.cmx \ + ocamltest/ocaml_variables.cmx \ + ocamltest/ocaml_directories.cmx \ + ocamltest/ocaml_commands.cmx \ + utils/misc.cmx \ + ocamltest/environments.cmx \ + ocamltest/debugger_variables.cmx \ + ocamltest/debugger_flags.cmx \ + utils/clflags.cmx \ + ocamltest/builtin_variables.cmx \ + ocamltest/actions_helpers.cmx \ + ocamltest/actions.cmx \ + ocamltest/debugger_actions.cmi +ocamltest/debugger_actions.cmi : \ + ocamltest/actions.cmi +ocamltest/debugger_flags.cmo : \ + ocamltest/ocaml_directories.cmi \ + ocamltest/debugger_flags.cmi +ocamltest/debugger_flags.cmx : \ + ocamltest/ocaml_directories.cmx \ + ocamltest/debugger_flags.cmi +ocamltest/debugger_flags.cmi : +ocamltest/debugger_variables.cmo : \ + ocamltest/variables.cmi \ + ocamltest/debugger_variables.cmi +ocamltest/debugger_variables.cmx : \ + ocamltest/variables.cmx \ + ocamltest/debugger_variables.cmi +ocamltest/debugger_variables.cmi : \ + ocamltest/variables.cmi ocamltest/environments.cmo : \ ocamltest/variables.cmi \ ocamltest/ocamltest_stdlib.cmi \ @@ -9940,11 +10079,13 @@ ocamltest/filecompare.cmo : \ ocamltest/run_command.cmi \ ocamltest/ocamltest_stdlib.cmi \ ocamltest/ocamltest_config.cmi \ + utils/misc.cmi \ ocamltest/filecompare.cmi ocamltest/filecompare.cmx : \ ocamltest/run_command.cmx \ ocamltest/ocamltest_stdlib.cmx \ ocamltest/ocamltest_config.cmx \ + utils/misc.cmx \ ocamltest/filecompare.cmi ocamltest/filecompare.cmi : ocamltest/main.cmo : \ @@ -10254,12 +10395,18 @@ ocamltest/options.cmo : \ ocamltest/variables.cmi \ ocamltest/translate.cmi \ ocamltest/tests.cmi \ + utils/misc.cmi \ + driver/compmisc.cmi \ + utils/clflags.cmi \ ocamltest/actions.cmi \ ocamltest/options.cmi ocamltest/options.cmx : \ ocamltest/variables.cmx \ ocamltest/translate.cmx \ ocamltest/tests.cmx \ + utils/misc.cmx \ + driver/compmisc.cmx \ + utils/clflags.cmx \ ocamltest/actions.cmx \ ocamltest/options.cmi ocamltest/options.cmi : \ @@ -10478,17 +10625,20 @@ testsuite/tools/parsecmmaux.cmo : \ parsing/location.cmi \ lambda/lambda.cmi \ lambda/debuginfo.cmi \ + asmcomp/cmm.cmi \ middle_end/backend_var.cmi \ testsuite/tools/parsecmmaux.cmi testsuite/tools/parsecmmaux.cmx : \ parsing/location.cmx \ lambda/lambda.cmx \ lambda/debuginfo.cmx \ + asmcomp/cmm.cmx \ middle_end/backend_var.cmx \ testsuite/tools/parsecmmaux.cmi testsuite/tools/parsecmmaux.cmi : \ parsing/location.cmi \ lambda/debuginfo.cmi \ + asmcomp/cmm.cmi \ middle_end/backend_var.cmi otherlibs/dynlink/byte/dynlink.cmo : \ otherlibs/dynlink/dynlink_types.cmi \ diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..8291bf70 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*] +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ml*] +indent_style = space + +[*.{c,h,h.in,sh,ac,m4}] +indent_style = space +indent_size = 2 diff --git a/.gitattributes b/.gitattributes index b1796970..73dc7d13 100644 --- a/.gitattributes +++ b/.gitattributes @@ -17,7 +17,10 @@ * text=auto # It is not possible to wrap lines lines in .gitattributes files -.gitattributes typo.long-line=may typo.utf8 +.gitattributes typo.long-line=may typo.non-ascii +.gitmodules typo.long-line=may typo.tab=may + +.editorconfig typo.missing-header=may # Binary files /boot/ocamlc binary @@ -52,18 +55,17 @@ tools/mantis2gh_stripped.csv typo.missing-header META.in typo.missing-header # Hyperlinks and other markup features cause long lines -*.adoc typo.long-line=may typo.very-long-line=may -*.md typo.long-line=may typo.very-long-line=may +*.adoc typo.long-line=may typo.very-long-line=may typo.non-ascii=may +*.md typo.long-line=may typo.very-long-line=may typo.non-ascii=may # Github templates and scripts lack headers, have long lines /.github/** typo.missing-header typo.long-line=may typo.very-long-line=may +/.github/workflows/*.yml typo.non-ascii=may /.mailmap typo.long-line typo.missing-header typo.non-ascii -/CONTRIBUTING.md typo.non-ascii=may -/README.adoc typo.non-ascii=may -/README.win32.adoc typo.non-ascii=may -/Changes typo.utf8 typo.missing-header -/release-info/News typo.utf8 typo.missing-header +/CONTRIBUTING.md typo.non-ascii +/Changes typo.non-ascii typo.missing-header +/release-info/News typo.non-ascii typo.missing-header /LICENSE typo.very-long-line typo.missing-header # tools/ci/appveyor/appveyor_build.cmd only has missing-header because # dra27 too lazy to update check-typo to interpret Cmd-style comments! @@ -81,8 +83,8 @@ Makefile* typo.makefile-whitespace=may asmcomp/*/emit.mlp typo.tab=may typo.long-line=may # Unicode character used for graphical debugging and box drawing -typing/gprinttyp.mli typo.utf8 -typing/gprinttyp.ml typo.utf8 +typing/gprinttyp.mli typo.non-ascii +typing/gprinttyp.ml typo.non-ascii # The build-aux directory contains bundled files so do not check it build-aux typo.prune @@ -105,23 +107,24 @@ otherlibs/unix/stat_win32.c typo.long-line otherlibs/unix/symlink_win32.c typo.long-line # Some Unicode characters here and there -utils/misc.ml typo.utf8 +utils/misc.ml typo.non-ascii runtime/sak.c typo.non-ascii -stdlib/hashbang typo.white-at-eol typo.missing-lf - testsuite/tests/** typo.missing-header typo.long-line=may testsuite/tests/lib-bigarray-2/bigarrf.f typo.tab linguist-language=Fortran testsuite/tests/lib-unix/win-stat/fakeclock.c typo.missing-header=false testsuite/tests/misc-unsafe/almabench.ml typo.long-line -testsuite/tests/parsing/latin9.ml typo.utf8 typo.very-long-line -testsuite/tests/parsing/comments.ml typo.utf8 -testsuite/tests/tool-ocamldoc/Latin9.ml typo.utf8 -testsuite/tests/parsetree/source.ml typo.utf8 -testsuite/tests/typing-unicode/*.ml typo.utf8 -testsuite/tests/tool-toplevel/strings.ml typo.utf8 -testsuite/tests/win-unicode/*.ml typo.utf8 -testsuite/tests/unicode/見.ml typo.utf8 +testsuite/tests/parsing/latin9.ml typo.non-ascii typo.very-long-line +testsuite/tests/parsing/comments.ml typo.non-ascii +testsuite/tests/tool-ocamldoc/Latin9.ml typo.non-ascii +testsuite/tests/parsetree/source.ml typo.non-ascii +testsuite/tests/typing-unicode/*.ml typo.non-ascii +testsuite/tests/tool-toplevel/strings.ml typo.non-ascii +testsuite/tests/win-unicode/*.ml typo.non-ascii +testsuite/tests/unicode/見.ml typo.non-ascii +testsuite/tests/lib-format/unicode.ml typo.non-ascii +testsuite/tests/lib-string/test_string.ml typo.non-ascii +testsuite/tests/lib-uchar/test.ml typo.non-ascii testsuite/tests/lexing/reject_bad_encoding.ml typo.prune testsuite/tests/asmgen/immediates.cmm typo.very-long-line testsuite/tests/generated-parse-errors/errors.* typo.very-long-line @@ -152,7 +155,7 @@ tools/magic typo.missing-header /boot/menhir/** typo.long-line=may typo.very-long-line=may /boot/menhir/** typo.missing-header=may /boot/menhir/** typo.white-at-eol=may -/boot/menhir/** typo.utf8=may +/boot/menhir/** typo.non-ascii=may # Line-ending specifications, for Windows interoperability *.sh text eol=lf @@ -181,12 +184,10 @@ aclocal.m4 typo.tab -linguist-vendored linguist-language=M4Sugar configure.ac text eol=lf # These scripts are all parts of autoconf and are tagged linguist-generated # to suppress inclusion in PR diffs. -build-aux/compile linguist-generated text eol=lf build-aux/config.guess linguist-generated text eol=lf build-aux/config.sub linguist-generated text eol=lf build-aux/install-sh linguist-generated text eol=lf build-aux/ltmain.sh linguist-generated text eol=lf -build-aux/missing linguist-generated text eol=lf build-aux/*.m4 linguist-vendored build-aux/ocaml_version.m4 -linguist-vendored linguist-language=M4Sugar ocamltest/OCAMLTEST.org typo.long-line=may typo.missing-header diff --git a/.github/workflows/build-cross.yml b/.github/workflows/build-cross.yml new file mode 100644 index 00000000..6d2ba59e --- /dev/null +++ b/.github/workflows/build-cross.yml @@ -0,0 +1,273 @@ +name: Cross compilers + +on: + pull_request: + types: [opened, synchronize, reopened, labeled, unlabeled] + workflow_dispatch: + +# Restrict the GITHUB_TOKEN +permissions: {} + +# See build.yml +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'pull_request' || github.sha }} + cancel-in-progress: true + +env: + res: 0 + TESTDIR: >- + C:\Бактріан🐫 + STR_UTF8: >- + "C:\\Бактріан🐫" + STR_UTF16: >- + L"C:\\\x0411\x0430\x043a\x0442\x0440\x0456\x0430\x043d\xd83d\xdc2b" + EXAMPLE_PROGRAM: | + let _ = + Printf.printf "Version: %s\nOS: %s\nUnix: %b\nWin: %b\nCygwin: %b\n" + Sys.ocaml_version Sys.os_type Sys.unix Sys.win32 Sys.cygwin + COMPLIBS_PROG_X86_64: | + let _ = + Printf.printf "allow_unaligned_access = %b\n" Arch.allow_unaligned_access; + Printf.printf "win64 = %b\n" Arch.win64 + COMPLIBS_PROG_AARCH64: | + let _ = + Printf.printf "allow_unaligned_access = %b\n" Arch.allow_unaligned_access; + Printf.printf "macosx = %b\n" Arch.macosx + +jobs: + non-cross: + if: contains(github.event.pull_request.labels.*.name, 'run-crosscompiler-tests') + runs-on: ubuntu-latest + steps: + - name: Checkout OCaml + uses: actions/checkout@v4 + with: + persist-credentials: false + - name: Configure, build and install OCaml + run: | + PREFIX="$HOME/.local" + echo "$PREFIX/bin" >> "$GITHUB_PATH" + set -x + ./configure --disable-warn-error --disable-ocamldoc \ + --disable-ocamltest --disable-stdlib-manpages \ + --disable-dependency-generation --prefix="$PREFIX" || res=$? + if ! [ "$res" = 0 ]; then cat config.log; exit "$res"; fi + make -j + make install + cd "$HOME" + tar caf /tmp/ocaml.tar.zst .local + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: non-cross-ocaml + path: /tmp/ocaml.tar.zst + retention-days: 1 + + cross-windows: + runs-on: ubuntu-latest + needs: non-cross + steps: + - name: Download Artifact + uses: actions/download-artifact@v4 + with: + name: non-cross-ocaml + - name: Install non-cross OCaml and set up environment + run: | + set -x + tar xaf ocaml.tar.zst -C "$HOME" + rm -f ocaml.tar.zst + echo "$HOME/.local/bin" >> "$GITHUB_PATH" + sudo apt-get update -y + sudo apt-get install -y gcc-mingw-w64-x86-64 + - name: Checkout OCaml + uses: actions/checkout@v4 + with: + submodules: true + persist-credentials: false + - name: Configure, build and install Linux-to-Windows OCaml + run: | + set -x + ./configure --prefix="$HOME/cross" --target=x86_64-w64-mingw32 \ + TARGET_LIBDIR="$TESTDIR" || res=$? + if ! [ "$res" = 0 ]; then cat config.log; exit "$res"; fi + # The OOM-killer may be triggered if the number of parallel + # jobs isn't limited. + make crossopt -j$(nproc) + make installcross + ln -sr "$HOME/cross/bin/flexlink.opt.exe" "$HOME/.local/bin/flexlink" + - name: Show opt.opt configuration + run: | + set -x + $HOME/cross/bin/ocamlopt.opt.exe -config + cat runtime/build_config.h + - name: Cross compile a small program + run: | + printf %s "$EXAMPLE_PROGRAM$COMPLIBS_PROG_X86_64" > example.ml + set -x + cat example.ml + $HOME/cross/bin/ocamlopt.opt.exe -I $HOME/cross/lib/ocaml/compiler-libs/ ocamlcommon.cmxa ocamloptcomp.cmxa example.ml -o example.exe -verbose + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: windows-executable + path: example.exe + retention-days: 1 + - name: Test cross sak + run: | + printf %s "$STR_UTF16" > utf16.ref + printf %s "$STR_UTF8" > utf8.ref + set -x + runtime/sak encode-C-utf16-literal "$TESTDIR" > utf16 + git diff --no-index utf16.ref utf16 + runtime/sak encode-C-utf8-literal "$TESTDIR" > utf8 + git diff --no-index utf8.ref utf8 + + run-windows: + runs-on: windows-latest + needs: cross-windows + steps: + - name: Download Artifact + uses: actions/download-artifact@v4 + with: + name: windows-executable + - name: Run example program + run: | + .\example.exe + + cross-arm-linux: + runs-on: ubuntu-latest + needs: non-cross + steps: + - name: Download Artifact + uses: actions/download-artifact@v4 + with: + name: non-cross-ocaml + - name: Install non-cross OCaml and set up environment + run: | + set -x + tar xaf ocaml.tar.zst -C "$HOME" + rm -f ocaml.tar.zst + echo "$HOME/.local/bin" >> "$GITHUB_PATH" + sudo apt-get update -y + sudo apt-get install -y gcc-aarch64-linux-gnu qemu-user + - name: Checkout OCaml + uses: actions/checkout@v4 + with: + submodules: true + persist-credentials: false + - name: Configure, build and install Linux-to-Windows OCaml + run: | + set -x + ./configure --prefix="$HOME/cross" --target=aarch64-linux-gnu \ + || res=$? + if ! [ "$res" = 0 ]; then cat config.log; exit "$res"; fi + make crossopt -j + make installcross + - name: Show opt.opt configuration + run: | + set -x + $HOME/cross/bin/ocamlopt.opt -config + cat runtime/build_config.h + - name: Cross compile a small program + run: | + printf %s "$EXAMPLE_PROGRAM$COMPLIBS_PROG_AARCH64" > example.ml + set -x + cat example.ml + $HOME/cross/bin/ocamlopt.opt -I $HOME/cross/lib/ocaml/compiler-libs/ ocamlcommon.cmxa ocamloptcomp.cmxa example.ml -o example -verbose + - name: Run the small example program + run: | + set -x + qemu-aarch64 -L /usr/aarch64-linux-gnu example + - name: Test cross sak + run: | + printf %s "$STR_UTF16" > utf16.ref + printf %s "$STR_UTF8" > utf8.ref + set -x + runtime/sak encode-C-utf16-literal "$TESTDIR" > utf16 + git diff --no-index utf16.ref utf16 + runtime/sak encode-C-utf8-literal "$TESTDIR" > utf8 + git diff --no-index utf8.ref utf8 + + cross-android: + runs-on: ubuntu-latest + needs: non-cross + steps: + - name: Download Artifact + uses: actions/download-artifact@v4 + with: + name: non-cross-ocaml + - name: Install non-cross OCaml + run: | + set -x + tar xaf ocaml.tar.zst -C "$HOME" + rm -f ocaml.tar.zst + echo "$HOME/.local/bin" >> "$GITHUB_PATH" + - name: Restore the Android NDK from cache + uses: actions/cache/restore@v4 + id: cache + with: + path: | + /home/runner/android + key: android-ndk + - name: Download the Android NDK + run: | + set -x + mkdir -p "$HOME/android" + cd "$HOME/android" + wget --no-verbose https://dl.google.com/android/repository/android-ndk-r27b-linux.zip + unzip android-ndk-r27b-linux.zip + rm android-ndk-r27b-linux.zip + if: steps.cache.outputs.cache-hit != 'true' + - name: Save the Android NDK to cache + uses: actions/cache/save@v4 + with: + path: | + /home/runner/android + key: android-ndk + if: steps.cache.outputs.cache-hit != 'true' + - name: Checkout OCaml + uses: actions/checkout@v4 + with: + persist-credentials: false + - name: Configure, build and install Linux-to-Android OCaml + env: + TARGET: x86_64-linux-android21 + TOOLDIR: android-ndk-r27b/toolchains/llvm/prebuilt/linux-x86_64/bin + run: | + DIR="$HOME/android/$TOOLDIR" + set -x + # Hack around the fact that pthread_cancel isn't available on Android + # So the result program should _not_ be run with cleanup on exit + # (so no `c=1` in `OCAMLRUNPARAM`) + ./configure --prefix="$HOME/cross" --target=$TARGET \ + TARGET_LIBDIR="/dummy/directory" \ + CC="$DIR/clang --target=$TARGET" \ + CPPFLAGS='-Dpthread_cancel=assert' \ + AR="$DIR/llvm-ar" \ + PARTIALLD="$DIR/ld -r" \ + RANLIB="$DIR/llvm-ranlib" \ + STRIP="$DIR/llvm-strip" || res=$? + if ! [ "$res" = 0 ]; then cat config.log; exit "$res"; fi + make crossopt -j + make installcross + - name: Show opt.opt configuration + run: | + set -x + $HOME/cross/bin/ocamlopt.opt -config + cat runtime/build_config.h + - name: Cross compile a small program + run: | + printf %s "$EXAMPLE_PROGRAM" > example.ml + set -x + cat example.ml + $HOME/cross/bin/ocamlopt.opt example.ml -o example -verbose + file example + - name: Run example + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: 21 + arch: x86_64 + disable-animations: true + script: | + adb push example /data/local/tmp/example + adb shell /data/local/tmp/example diff --git a/.github/workflows/build-msvc.yml b/.github/workflows/build-msvc.yml index ecc762f8..9e130132 100644 --- a/.github/workflows/build-msvc.yml +++ b/.github/workflows/build-msvc.yml @@ -16,33 +16,76 @@ on: # Fully print commands executed by Make # MAKEFLAGS: V=1 +defaults: + run: + shell: bash -eo pipefail -o igncr {0} + jobs: + config: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.matrix.outputs.result}} + skip-testsuite: ${{ steps.skip.outputs.result }} + steps: + - name: Compute matrix for the "build" job + id: matrix + uses: actions/github-script@v7 + with: + script: | + // # Always test cl and clang-cl + let compilers = ['cl', 'clang-cl']; + // # Also test i686 MSVC + let include = [ + {cc: 'cl', arch: 'i686'}]; + // # If this is a pull request, see if the PR has the + // # 'CI: Full matrix' label. This is done using an API request, + // # rather than from context.payload.pull_request.labels, since we + // # want the _current_ list of labels. This allows the labelling to + // # be changed, and then forcing a re-run of the workflow, rather + // # than having labelling triggering a fresh workflow event (which + // # is wasteful). + if (context.payload.pull_request) { + const { data: labels } = + await github.rest.issues.listLabelsOnIssue({...context.repo, issue_number: context.payload.pull_request.number}); + if (labels.some(label => label.name === 'CI: Full matrix')) { + console.log('Full matrix requested'); + // # Test Cygwin as well + compilers.push('gcc'); + // # Test bytecode-only Cygwin + include.push({cc: 'gcc', arch: 'x86_64', config_arg: '--disable-native-compiler'}); + } + } + return {config_arg: [''], arch: ['x86_64'], cc: compilers, include: include}; + - name: Determine if the testsuite should be skipped + id: skip + uses: actions/github-script@v7 + with: + script: | + let skip_testsuite = false; + if (context.payload.pull_request) { + const { data: labels } = + await github.rest.issues.listLabelsOnIssue({...context.repo, issue_number: context.payload.pull_request.number}); + skip_testsuite = labels.some(label => label.name === 'CI: Skip testsuite'); + } + console.log('Skip testsuite: ' + skip_testsuite); + return skip_testsuite; + build: permissions: {} runs-on: windows-latest - timeout-minutes: 60 + needs: config + + timeout-minutes: ${{ matrix.cc == 'gcc' && 90 || 60 }} - name: ${{ matrix.cc == 'cl' && 'MSVC' || 'clang-cl' }} ${{ matrix.x86_64 && '64 bits' || '32 bits' }} + name: ${{ matrix.cc == 'cl' && 'MSVC' || matrix.cc == 'gcc' && 'Cygwin' || 'clang-cl' }} ${{ matrix.arch }} ${{ matrix.config_arg != '' && format('({0})', matrix.config_arg) || '' }} strategy: - matrix: - x86_64: [true, false] - cc: [cl, clang-cl] - exclude: - - cc: clang-cl - x86_64: false + matrix: ${{ fromJSON(needs.config.outputs.matrix) }} + fail-fast: true steps: - - name: Save pristine PATH - run: | - echo "PRISTINE_PATH=${env:Path}" >> "${env:GITHUB_ENV}" - - - name: Set up MSVC - uses: ilammy/msvc-dev-cmd@v1 - with: - arch: ${{ matrix.x86_64 && 'x64' || 'x86' }} - name: Fetch OCaml uses: actions/checkout@v4 @@ -51,8 +94,6 @@ jobs: - name: Restore Cygwin cache uses: actions/cache/restore@v4 - env: - PATH: ${{ env.PRISTINE_PATH }} with: path: | C:\cygwin-packages @@ -61,78 +102,93 @@ jobs: - name: Install Cygwin uses: cygwin/cygwin-install-action@v3 with: - packages: make,bash,mingw64-x86_64-gcc-core + packages: make,${{ matrix.cc != 'gcc' && 'mingw64-x86_64-' || 'gcc-fortran,' }}gcc-core install-dir: 'D:\cygwin' - name: Save Cygwin cache uses: actions/cache/save@v4 - env: - PATH: ${{ env.PRISTINE_PATH }} with: path: | C:\cygwin-packages key: cygwin-packages + - name: Set up MSVC + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.arch == 'x86_64' && 'x64' || 'x86' }} + if: matrix.cc != 'gcc' + - name: Compute a key to cache configure results - shell: bash + id: autoconf-cache-key env: - HOST: ${{ matrix.x86_64 && 'x86_64-pc-windows' || 'i686-pc-windows' }} - CC: ${{ matrix.cc }} - run: >- - echo "AUTOCONF_CACHE_KEY=$HOST-$CC-$({ cat configure; uname; } | sha1sum | cut -c 1-7)" >> $GITHUB_ENV + HOST: ${{ format('{0}-pc-{1}', matrix.arch, (matrix.cc == 'gcc' && 'cygwin' || 'windows')) }} + run: | + echo "key=${{ env.HOST }}-${{ matrix.cc }}-${{ hashFiles('configure') }}" >> $GITHUB_OUTPUT - name: Restore Autoconf cache uses: actions/cache/restore@v4 with: path: | config.cache - key: ${{ env.AUTOCONF_CACHE_KEY }} + key: ${{ steps.autoconf-cache-key.outputs.key }} - - name: Build OCaml - shell: bash + - name: Configure tree env: - HOST: ${{ matrix.x86_64 && 'x86_64-pc-windows' || 'i686-pc-windows' }} - CC: ${{ matrix.cc }} - run: >- - eval $(tools/msvs-promote-path) ; - if ! ./configure --cache-file=config.cache --host=$HOST CC=$CC ; then - rm -rf config.cache ; - failed=0 ; - ./configure --cache-file=config.cache --host=$HOST CC=$CC \ - || failed=$?; - if ((failed)) ; then cat config.log ; exit $failed ; fi ; - fi ; - make -j || failed=$? ; - if ((failed)) ; then make -j1 V=1 ; exit $failed ; fi ; - runtime/ocamlrun ocamlc -config ; - # Don't add indentation or comments, it breaks Bash on - # Windows when the yaml text block scalar is processed as a - # single line. + CONFIG_ARGS: >- + --cache-file=config.cache + --prefix "${{ matrix.cc != 'gcc' && '$PROGRAMFILES/Бактріан🐫' || '$(cygpath "$PROGRAMFILES/Бактріан🐫")'}}" + ${{ matrix.cc != 'gcc' && format('--host={0}-pc-windows', matrix.arch) || '' }} + ${{ matrix.cc != 'gcc' && format('CC={0}', matrix.cc) || '' }} + ${{ matrix.config_arg }} + run: | + eval $(tools/msvs-promote-path) + if ! ./configure ${{ env.CONFIG_ARGS }} ; then + rm -rf config.cache + failed=0 + ./configure ${{ env.CONFIG_ARGS }} || failed=$? + if ((failed)) ; then + echo + echo "::group::config.log content ($(wc -l config.log) lines)" + cat config.log + echo '::endgroup::' + exit $failed + fi + fi - name: Save Autoconf cache uses: actions/cache/save@v4 with: path: | config.cache - key: ${{ env.AUTOCONF_CACHE_KEY }} - - - name: Assemble backend with MinGW GASM and compare - shell: bash - run: >- - x86_64-w64-mingw32-gcc -c -I./runtime -I ./flexdll -D__USE_MINGW_ANSI_STDIO=0 -DUNICODE -D_UNICODE -DWINDOWS_UNICODE=1 -DCAMLDLLIMPORT= -DIN_CAML_RUNTIME -DNATIVE_CODE -DTARGET_amd64 -DMODEL_default -DSYS_mingw64 -o runtime/amd64.o runtime/amd64.S ; - dumpbin /disasm:nobytes runtime/amd64nt.obj > runtime/amd64nt.dump ; - awk -f tools/ci/actions/canonicalize-dumpbin.awk runtime/amd64nt.dump runtime/amd64nt.dump > runtime/amd64nt.canonical ; - dumpbin /disasm:nobytes runtime/amd64.o > runtime/amd64.dump ; - awk -f tools/ci/actions/canonicalize-dumpbin.awk runtime/amd64.dump runtime/amd64.dump > runtime/amd64.canonical ; - git diff --no-index -- runtime/amd64*.canonical ; - wc -l runtime/amd64*.dump runtime/amd64*.canonical ; + key: ${{ steps.autoconf-cache-key.outputs.key }} + + - name: Build OCaml + run: | + eval $(tools/msvs-promote-path) + make -j || failed=$? + if ((failed)) ; then make -j1 V=1 ; exit $failed ; fi + test -e runtime/libcamlrun.lib || tools/check-symbol-names runtime/*.a otherlibs/*/lib*.a + runtime/ocamlrun ocamlc -config + + - name: Assemble backend with mingw-w64 GASM and compare + run: | + x86_64-w64-mingw32-gcc -c -I./runtime -I ./flexdll -D__USE_MINGW_ANSI_STDIO=0 -DUNICODE -D_UNICODE -DWINDOWS_UNICODE=1 -DCAMLDLLIMPORT= -DIN_CAML_RUNTIME -DNATIVE_CODE -DTARGET_amd64 -DMODEL_default -DSYS_mingw64 -o runtime/amd64.o runtime/amd64.S + dumpbin /disasm:nobytes runtime/amd64nt.obj > runtime/amd64nt.dump + awk -f tools/ci/actions/canonicalize-dumpbin.awk runtime/amd64nt.dump runtime/amd64nt.dump > runtime/amd64nt.canonical + dumpbin /disasm:nobytes runtime/amd64.o > runtime/amd64.dump + awk -f tools/ci/actions/canonicalize-dumpbin.awk runtime/amd64.dump runtime/amd64.dump > runtime/amd64.canonical + git diff --no-index -- runtime/amd64*.canonical + wc -l runtime/amd64*.dump runtime/amd64*.canonical # ^ The final wc is there to make sure that the canonical files are # reasonable cleaned-up versions of the raw dumpbins and not simply # empty - if: matrix.x86_64 + if: endsWith(matrix.arch, '64') && matrix.cc != 'gcc' - name: Run the test suite - shell: bash - run: >- - eval $(tools/msvs-promote-path) ; - make -j tests ; + if: ${{ needs.config.outputs.skip-testsuite != 'true' }} + run: | + eval $(tools/msvs-promote-path) + make tests + + - name: Install the compiler + run: make install diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f65cfb05..215a37b2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,7 +34,7 @@ jobs: # We then upload the compiler tree as a build artifact to enable re-use in # subsequent jobs. build: - runs-on: 'ubuntu-latest' + runs-on: 'ubuntu-24.04' outputs: manual_changed: ${{ steps.manual.outputs.manual_changed }} steps: @@ -59,7 +59,7 @@ jobs: '${{ github.event.repository.full_name }}' - name: Configure tree run: | - MAKE_ARG=-j CONFIG_ARG='--enable-flambda --enable-cmm-invariants --enable-dependency-generation --enable-native-toplevel' OCAMLRUNPARAM=b,v=0 bash -xe tools/ci/actions/runner.sh configure + MAKE_ARG=-j CONFIG_ARG='--enable-flambda --enable-cmm-invariants --enable-codegen-invariants --enable-dependency-generation --enable-native-toplevel' OCAMLRUNPARAM=b,v=0 bash -xe tools/ci/actions/runner.sh configure - name: Build run: | MAKE_ARG=-j bash -xe tools/ci/actions/runner.sh build @@ -80,18 +80,19 @@ jobs: # minor heap. normal: name: ${{ matrix.name }} - needs: build - runs-on: ubuntu-latest + needs: [build, config] + runs-on: ubuntu-24.04 strategy: matrix: include: - id: normal name: normal - dependencies: texlive-latex-extra texlive-fonts-recommended texlive-luatex hevea sass + dependencies: texlive-latex-extra texlive-fonts-recommended texlive-luatex hevea sass gdb lldb - id: debug name: extra (debug) - id: debug-s4096 name: extra (debug-s4096) + fail-fast: true steps: - name: Download Artifact uses: actions/download-artifact@v4 @@ -104,20 +105,21 @@ jobs: - name: Packages if: matrix.dependencies != '' run: | - sudo apt-get update -y && sudo apt-get install -y ${{ matrix.dependencies }} + sudo apt-get update -y + sudo apt-get install -y ${{ matrix.dependencies }} - name: Run the testsuite - if: matrix.id == 'normal' + if: ${{ matrix.id == 'normal' && needs.config.outputs.skip-testsuite != 'true' }} run: | MAKE_ARG=-j OCAMLRUNPARAM=b,v=0 bash -xe tools/ci/actions/runner.sh test - name: Run the testsuite (debug runtime) - if: matrix.id == 'debug' + if: ${{ matrix.id == 'debug' && needs.config.outputs.skip-testsuite != 'true' }} env: OCAMLRUNPARAM: v=0,V=1 USE_RUNTIME: d run: | bash -cxe "SHOW_TIMINGS=1 tools/ci/actions/runner.sh test" - name: Run the testsuite (s=4096, debug runtime) - if: matrix.id == 'debug-s4096' + if: ${{ matrix.id == 'debug-s4096' && needs.config.outputs.skip-testsuite != 'true' }} env: OCAMLRUNPARAM: s=4096,v=0 USE_RUNTIME: d @@ -142,40 +144,97 @@ jobs: run: | MAKE_ARG=-j OCAMLRUNPARAM=b,v=0 bash -xe tools/ci/actions/runner.sh other-checks -# MacOS build+testsuite run, and Linux O0 run. +# macOS build+testsuite run, and other Linux configurations (-O0, etc.) + config: + runs-on: ubuntu-latest + outputs: + jobs: ${{ steps.jobs.outputs.result }} + skip-testsuite: ${{ steps.skip.outputs.result }} + steps: + - name: Compute matrix for the "others" job + id: jobs + uses: actions/github-script@v7 + with: + script: | + // # Default jobs: Linux -O0, Linux arm64 & macOS + let jobs = [ + {name: 'linux-O0', os: 'ubuntu-latest', + config_arg: "CFLAGS='-O0'"}, + {name: 'linux-arm64', os: 'ubuntu-24.04-arm'}, + {name: 'macos-x86_64', os: 'macos-13'}, + {name: 'macos-arm64', os: 'macos-15'}]; + // # If this is a pull request, see if the PR has the + // # 'CI: Full matrix' label. This is done using an API request, + // # rather than from context.payload.pull_request.labels, since we + // # want the _current_ list of labels. This allows the labelling to + // # be changed, and then forcing a re-run of the workflow, rather + // # than having labelling triggering a fresh workflow event (which + // # is wasteful). + if (context.payload.pull_request) { + const { data: labels } = + await github.rest.issues.listLabelsOnIssue({...context.repo, issue_number: context.payload.pull_request.number}); + if (labels.some(label => label.name === 'CI: Full matrix')) { + console.log('Full matrix requested'); + // # Add "static" and "minimal" jobs + jobs = jobs.concat([ + {name: 'static', os: 'ubuntu-latest', + config_arg: '--disable-shared'}, + {name: 'minimal', os: 'ubuntu-latest', + config_arg: '--disable-native-compiler --disable-shared --disable-debug-runtime --disable-instrumented-runtime --disable-systhreads --disable-str-lib --disable-unix-lib --disable-ocamldoc'}]); + } + } + return jobs; + - name: Determine if the testsuite should be skipped + id: skip + uses: actions/github-script@v7 + with: + script: | + let skip_testsuite = false; + if (context.payload.pull_request) { + const { data: labels } = + await github.rest.issues.listLabelsOnIssue({...context.repo, issue_number: context.payload.pull_request.number}); + skip_testsuite = labels.some(label => label.name === 'CI: Skip testsuite'); + } + console.log('Skip testsuite: ' + skip_testsuite); + return skip_testsuite; + others: name: ${{ matrix.name }} + needs: config runs-on: ${{ matrix.os }} strategy: matrix: - include: - - name: linux-O0 - os: ubuntu-latest - config_arg: CFLAGS='-O0' - - name: macos-x86_64 - os: macos-13 - - name: macos-arm64 - os: macos-14 + include: ${{ fromJSON(needs.config.outputs.jobs) }} + fail-fast: true steps: - name: Checkout uses: actions/checkout@v4 with: persist-credentials: false - - name: OS Dependencies - if: runner.os == 'macOS' - run: brew install parallel + - name: macOS Dependencies + if: startsWith(matrix.os, 'macos-') + run: | + brew install parallel + # Allows starting up lldb from a remote terminal + # Note: in order to start lldb, the user must also be in + # one of these groups: "admin" or "_developer". + sudo DevToolsSecurity --enable + spctl developer-mode enable-terminal + # Select latest supported version + sudo xcode-select -s /Applications/Xcode_${{ matrix.os == 'macos-13' && '15.2' || '16.3' }}.app/Contents/Developer + lldb --version - name: configure tree run: | - CONFIG_ARG='${{ matrix.config_arg }}' MAKE_ARG=-j bash -xe tools/ci/actions/runner.sh configure + CONFIG_ARG='--enable-codegen-invariants ${{ matrix.config_arg }}' MAKE_ARG=-j bash -xe tools/ci/actions/runner.sh configure - name: Build run: | MAKE_ARG=-j bash -xe tools/ci/actions/runner.sh build - name: Run the testsuite - if: ${{ matrix.name != 'linux-O0' }} + if: ${{ matrix.name != 'linux-O0' && needs.config.outputs.skip-testsuite != 'true' }} run: | bash -c 'SHOW_TIMINGS=1 tools/ci/actions/runner.sh test' - name: Run the testsuite (linux-O0) - if: ${{ matrix.name == 'linux-O0' }} + if: ${{ matrix.name == 'linux-O0' && needs.config.outputs.skip-testsuite != 'true' }} env: OCAMLRUNPARAM: v=0,V=1 USE_RUNTIME: d @@ -186,13 +245,14 @@ jobs: i386: runs-on: ubuntu-latest + needs: config container: image: debian:12 options: --platform linux/i386 --user root steps: - name: OS Dependencies run: | - apt-get update + apt-get update -y apt-get install -y git gcc make parallel adduser --disabled-password --gecos '' ocaml - name: Checkout @@ -206,5 +266,6 @@ jobs: run: | MAKE_ARG=-j su ocaml -c "bash -xe tools/ci/actions/runner.sh build" - name: Run the testsuite + if: ${{ needs.config.outputs.skip-testsuite != 'true' }} run: | su ocaml -c "bash -xe tools/ci/actions/runner.sh test" diff --git a/.github/workflows/hygiene.yml b/.github/workflows/hygiene.yml index db21dd49..dd39db60 100644 --- a/.github/workflows/hygiene.yml +++ b/.github/workflows/hygiene.yml @@ -47,20 +47,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} if: github.event_name == 'pull_request' - - name: Parsetree updated - run: >- - tools/ci/actions/check-parsetree-modified.sh - '${{ github.event.pull_request.issue_url }}' - '${{ github.ref }}' - 'pull_request' - '${{ github.event.pull_request.base.ref }}' - '${{ github.event.pull_request.base.sha }}' - '${{ github.event.pull_request.head.ref }}' - '${{ github.event.pull_request.head.sha }}' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: github.event_name == 'pull_request' - - name: configure correctly generated run: >- tools/ci/actions/check-configure.sh @@ -81,6 +67,7 @@ jobs: if: ${{ always() }} - name: check-typo revered + id: revered run: >- tools/ci/actions/check-typo.sh '${{ github.ref }}' @@ -98,9 +85,11 @@ jobs: - name: check-typo on whole tree run: tools/check-typo if: >- - github.event_name == 'push' - && (startsWith(github.event.ref, 'refs/heads/4.') - || github.event.ref == 'refs/heads/trunk') + ((github.event_name == 'push' + && (github.event.ref == 'refs/heads/trunk' + || startsWith(github.event.ref, 'refs/heads/4.') + || startsWith(github.event.ref, 'refs/heads/5.'))) + || steps.revered.outputs.full_check_needed == 'true') && always() - name: Check that labelled/unlabelled .mli files are in sync diff --git a/.github/workflows/multicoretests.yml b/.github/workflows/multicoretests.yml new file mode 100644 index 00000000..2bc8b4cc --- /dev/null +++ b/.github/workflows/multicoretests.yml @@ -0,0 +1,73 @@ +# Run the multicoretests testsuite if PR is labelled with run-multicoretests +name: Run multicoretests testsuite +on: + pull_request: + types: [opened, synchronize, reopened, labeled, unlabeled] + +# Restrict the GITHUB_TOKEN +permissions: {} + +# See build.yml +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'pull_request' || github.sha }} + cancel-in-progress: true + +jobs: + multicoretests: + if: contains(github.event.pull_request.labels.*.name, 'run-multicoretests') + runs-on: 'ubuntu-latest' + strategy: + matrix: + include: + - profile: dev + ocamlrunparam: b + - profile: debug-runtime + ocamlrunparam: b,s=4096 + steps: + - name: Checkout OCaml + uses: actions/checkout@v4 + with: + path: ocaml + persist-credentials: false + - name: Configure, build and install OCaml + run: | + bash -xe ocaml/tools/ci/actions/multicoretests.sh ocaml + - name: Checkout multicoretests + uses: actions/checkout@v4 + with: + repository: ocaml-multicore/multicoretests + ref: 0.8 + path: multicoretests + persist-credentials: false + - name: Checkout QCheck + uses: actions/checkout@v4 + with: + repository: c-cube/qcheck + ref: v0.25 + path: multicoretests/qcheck + persist-credentials: false + - name: Checkout dune + uses: actions/checkout@v4 + with: + repository: ocaml/dune + ref: 3.18.0 + path: dune + persist-credentials: false + - name: Build and install dune + run: | + bash -xe ocaml/tools/ci/actions/multicoretests.sh dune + - name: Show the configuration + run: | + bash ocaml/tools/ci/actions/multicoretests.sh show_config + - name: Build the test suite + env: + DUNE_PROFILE: ${{ matrix.profile }} + OCAMLRUNPARAM: ${{ matrix.ocamlrunparam }} + run: | + bash -xe ocaml/tools/ci/actions/multicoretests.sh build + - name: Run the multicore test suite + env: + DUNE_PROFILE: ${{ matrix.profile }} + OCAMLRUNPARAM: ${{ matrix.ocamlrunparam }} + run: | + bash -xe ocaml/tools/ci/actions/multicoretests.sh testsuite diff --git a/.github/workflows/parsetree-change.yml b/.github/workflows/parsetree-change.yml new file mode 100644 index 00000000..b953969c --- /dev/null +++ b/.github/workflows/parsetree-change.yml @@ -0,0 +1,39 @@ +name: Parsetree Updated + +on: + pull_request: + paths: + - 'parsing/parsetree.mli' + - 'parsing/asttypes.mli' + - 'parsing/location.mli' + - 'parsing/longident.mli' + - 'parsing/parse.mli' + - 'parsing/pprintast.mli' + +jobs: + comment-and-label: + if: ${{! contains(github.event.pull_request.labels.*.name, 'parsetree-change')}} + permissions: + pull-requests: write + runs-on: ubuntu-latest + steps: + - name: Notify ppxlib maintainers + uses: actions/github-script@v7 + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: 'CC @ocaml/ppxlib-dev' + }) + - name: Label PR + uses: actions/github-script@v7 + with: + script: | + github.rest.issues.addLabels({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ['parsetree-change'] + }) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index bed161e3..00000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: "Close stale issues" -on: - schedule: - - cron: "15 4 * * 1,3,5" - -jobs: - stale: - runs-on: ubuntu-latest - permissions: - issues: write - steps: - - uses: actions/stale@v8 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'This issue has been open one year with no activity. Consequently, it is being marked with the "stale" label. What this means is that the issue will be automatically closed in 30 days unless more comments are added or the "stale" label is removed. Comments that provide new information on the issue are especially welcome: is it still reproducible? did it appear in other contexts? how critical is it? etc.' - days-before-stale: 366 - days-before-close: 30 - exempt-issue-labels: 'bug' diff --git a/.github/workflows/tsan.yml b/.github/workflows/tsan.yml index 92e15011..33273977 100644 --- a/.github/workflows/tsan.yml +++ b/.github/workflows/tsan.yml @@ -33,7 +33,9 @@ jobs: with: persist-credentials: false - name: Install libunwind - run: sudo apt install -y libunwind-dev + run: | + sudo apt-get update -y + sudo apt-get install -y libunwind-dev # This temporary workaround reduces the number of random bits for the base # address of vma regions for mmap allocation, to avoid the # "FATAL: ThreadSanitizer: unexpected memory mapping" TSan error. @@ -85,7 +87,8 @@ jobs: - name: Packages if: matrix.dependencies != '' run: | - sudo apt-get update -y && sudo apt-get install -y ${{ matrix.dependencies }} + sudo apt-get update -y + sudo apt-get install -y ${{ matrix.dependencies }} - name: Run the testsuite if: matrix.id == 'normal' # Run testsuite with 30-minute timeout per test diff --git a/.gitignore b/.gitignore index 5cec3896..e72adc79 100644 --- a/.gitignore +++ b/.gitignore @@ -30,7 +30,7 @@ *.exe.manifest .DS_Store *.out -*.out.dSYM +*.dSYM/ *.swp _ocamltest _ocamltestd diff --git a/.gitmodules b/.gitmodules index d69d2a4d..7420fbaa 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,8 @@ [submodule "flexdll"] - path = flexdll - url = https://github.com/ocaml/flexdll.git + path = flexdll + url = https://github.com/ocaml/flexdll.git + shallow = true [submodule "winpthreads"] - path = winpthreads - url = https://github.com/ocaml/winpthreads.git + path = winpthreads + url = https://github.com/ocaml/winpthreads.git + shallow = true diff --git a/.mailmap b/.mailmap index 1159a14b..32ddba8d 100644 --- a/.mailmap +++ b/.mailmap @@ -141,6 +141,7 @@ Samuel Hym B. Szilvasy Hazem Elmasry Hazem Elmasry +T. Kinsart # These contributors prefer to be referred to pseudonymously whitequark diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5a13617b..05acc62a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -92,6 +92,22 @@ page](https://github.com/orgs/ocaml/teams/ocaml-dev/members), plus Anil as co-owner of the github/ocaml/ organization. Oddly enough, Github does not make the page publicly accessible. --> +### OCaml Language Committee + +Sometimes, consensus or decisions might be elusive during the review process, or +you might feel that some of the proposed design choices might warrant a wider +discussion. + +For those situations, we are experimenting with a new OCaml Language Committee +as a collegial instance for shepherding deliberations on the evolution of the +OCaml language and its standard library in a timely fashion. + +If you think that your PR or issue might be a good fit for consideration by the +OCaml Language Committee (see +https://github.com/ocaml/RFCs/blob/master/Committee.md for a more detailed +description), you just have to mention it to the current chair (@Octachron) in +the PR or issue. + ### Releases For more information about when and how new releases are published, see [the release introduction](release-info/introduction.md). diff --git a/Changes b/Changes index 971216bb..383f471f 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,756 @@ +OCaml 5.4.0 +--------------- + +(Changes that can break existing programs are marked with a "*") + +### Language features: + +- #13097: added immutable arrays (`'a iarray` type, Iarray stdlib module) + (Antal Spector-Zabusky and Olivier Nicole, review by Gabriel Scherer, + Jeremy Yallop and Vincent Laviron) + +- #13340: Array literal syntax [| e1; ...; en |] can now be used to + denote values of type `'a array` and `'a iarray` and `floatarray`, + both in expressions and patterns. The compiler disambiguates each + case by using contextual type information (assuming `'a array` + by default). + (Nicolás Ojeda Bär, review by Richard Eisenberg, Jeremy Yallop, Jacques + Garrigue, and Gabriel Scherer) + +- #13498: Tuple fields are now optionally labeled: + `(x:42, y:0)` and `let (~x, ~y) = ... in ...`. + (Ryan Tjoa and Chris Casinghino, review by Gabriel Scherer, Chris Casinghino, + and Leo White) + +- RFCs#39, #13404: atomic record fields + `{ ...; mutable readers : int [@atomic]; ... }` + `Atomic.Loc.fetch_and_add [%atomic.loc data.readers] 1` + (Clément Allain and Gabriel Scherer, review by KC Sivaramakrishnan, + Basile Clément and Olivier Nicole) + +### Standard library: + +* #14124: Do not raise Invalid_argument on negative List.{drop,take}. + (Daniel Bünzli, review by Gabriel Scherer, Nicolás Ojeda Bär) + +- #13696: Add Result.product and Result.Syntax: + `let open Result.Syntax in let* x = ... in ...` + (Daniel Bünzli, review by Gabriel Scherer, Nicolás Ojeda Bär) + +- #12871: Add the Pqueue module to the stdlib. It implements priority queues. + (Jean-Christophe Filliâtre, review by Daniel Bünzli, Léo Andrès and + Gabriel Scherer) + +- #13760: Add String.{edit_distance,spellcheck} + (Daniel Bünzli, review by wikku, Nicolás Ojeda Bär, Gabriel Scherer and + Florian Angeletti) + +- #13753, #13755: Add Stdlib.Repr: + Repr.phys_equal and Repr.compare are more explicit than (==) and `compare`. + (Kate Deplaix, Thomas Blanc and Léo Andrès, review by Gabriel Scherer, + Florian Angeletti, Nicolás Ojeda Bär, Daniel Bünzli and Jeremy Yallop) + +- #13695: Add Stdlib.Char.Ascii + (Daniel Bünzli, review by by Nicolás Ojeda Bär and Jeremy Yallop) + + +- #13720: Add Result.{get_ok',error_to_failure} + (Daniel Bünzli, review by wikku, Gabriel Scherer, Nicolás Ojeda Bär, + Vincent Laviron and hirrolot) + +- #13885: Add Dynarray.{exists2, for_all2}. + (T. Kinsart, review by Daniel Bünzli, Gabriel Scherer, and Nicolás Ojeda Bär) + +* #13862: Make List.sort_uniq keep the first occurrences of duplicates. + (Benoît Jubin, review by Nicolás Ojeda Bär, Gabriel Scherer) + +- #13836: Add [Float.]Array.{equal,compare}. + (Daniel Bünzli, review by Nicolás Ojeda Bär and Gabriel Scherer) + +- #13796: Add Uchar.utf_8_decode_length_of_byte and + Uchar.max_utf_8_decode_length. + (Daniel Bünzli, review by Nicolás Ojeda Bär and Florian Angeletti) + +- #13768: Add Either.get_left and Either.get_right + (T. Kinsart, review by Nicolás Ojeda Bär and Florian Angeletti) + +* #13570, #13794: Format, add an out_width function to Format device for + approximating unicode width. + (Florian Angeletti, review by Nicolás Ojeda Bär, Daniel Bünzli, + and Gabriel Scherer) + +- #13731: Add Either.retract + (Daniel Bünzli, review by Nicolás Ojeda Bär and David Allsopp) + +- #13729: Add Seq.filteri + (T. Kinsart, review by Nicolás Ojeda Bär and Daniel Bünzli) + +- #13721: Add Result.retract + (Daniel Bünzli, review by Gabriel Scherer, Nicolás Ojeda Bär and + David Allsopp) + +- #13310: Add Stdlib.Pair + (Victoire Noizet, review by Nicolás Ojeda Bär, Daniel Bünzli, Xavier Van de + Woestyne, Jeremy Yallop and Florian Angeletti) + +- #13662: Add eager boolean operations Bool.logand, Bool.logor, Bool.logxor + (Jeremy Yallop, review by Nicolás Ojeda Bär) + +- #13463, #13572: Avoid raising Queue.empty in Format when it is used + concurrently, raise a specific exception instead. + (Chritophe Raffalli, review by Gabriel Scherer and Daniel Bünzli) + +- #13620: Avoid copying the string in String.concat, String.sub and + String.split_on_char when the full string is returned. + (Christophe Raffalli, review by Nicolás Ojeda Bär and Gabriel Scherer and + Hugo Heuzard) + +- #13727: Reimplement Sys.getenv_opt not to use exceptions internally, meaning + that the current backtrace is preserved when Sys.getenv_opt returns None. + (David Allsopp, review by Nicolás Ojeda Bär, Josh Berdine and Gabriel Scherer) + +- #13737: Avoid closure allocations in Weak.Make.add when resizing the + table + (Vincent Laviron, review by Gabriel Scherer and Daniel Bünzli) + +- #13740: Improve performance of Weak.find_aux + (Josh Berdine, review by Gabriel Scherer) + +- #13782: Improve performance and type safety of Type.Id by using + [%extension_constructor] instead of Obj.Extension_constructor.of_val. + (Basile Clément, review by Vincent Laviron and Nicolás Ojeda Bär) + +- #13589: Expose Sys.io_buffer_size, the size of internal buffers used by the + runtime system and the `unix` library. + (Yves Ndiaye and Nicolás Ojeda Bär, review by Daniel Bünzli and Nicolás Ojeda + Bär) + +- #13569: add a `Format.format_text` which adds break hints to format literals. + (Florian Angeletti, review by Nicolás Ojeda Bär, Daniel Bünzli, + and Gabriel Scherer) + +- #13578: On Windows, use the OS CSPRNG to seed the Stdlib.Random generator. + (Antonin Décimo, review by Miod Vallat, Nicolás Ojeda Bär, and Xavier Leroy) + +- #13859: Fix Weak.get_copy not darkening custom blocks + (Josh Berdine, review by Stephen Dolan) + +- #13909: Add `Dynarray.unsafe_to_iarray` + (Olivier Nicole, review by Daniel Bünzli, Stefan Muenzel and Gabriel Scherer, + request by Daniel Bünzli) + +- #13932: Add List.singleton and Seq.singleton + (David Allsopp, tariffs applied by Nicolás Ojeda Bär and Gabriel Scherer) + +* #13843: Add signal definitions for SIGIO and SIGWINCH. Introduces a + type alias for signal int, signal_to_string to convert OCaml signal numbers + to their POSIX equivalent names, and signal_of_int/signal_to_int for + converting between OCaml and platform signal numbers. (Reported in #13825) + (Tim McGilchrist, review by David Allsopp, Nicolás Ojeda Bär, Daniel Bünzli + Jan Midtgaard and Miod Vallat) + +### Runtime system: + +- #13500: Add frame pointers support for ARM64 on Linux and macOS. + (Tim McGilchrist, review by KC Sivaramakrishnan, Fabrice Buoro + and Miod Vallat) + +- #12964: Reintroduce "memory cleanup upon exit" mode. The cleanup will + however be incomplete if not all domains have been joined when the main + domain terminates. + (Miod Vallat, review by KC Sivaramakrishnan, feedback from Nick Barnes + and Gabriel Scherer) + +- #13582: Enable software prefetching support for ARM64, s390x, PPC64 and RiscV. + Used during GC marking and sweeping to speed up both operations by + prefetching data. + (Tim McGilchrist, review by Nick Barnes, Antonin Décimo, + Stephen Dolan and Miod Vallat) + + +- #13675: Make Unix.map_file memory show up in Gc.Memprof. + (Stephen Dolan, review by Guillaume Munch-Maccagnoni and Gabriel Scherer) + +- #13785: Add `Runtime_events.Timestamp.get_current`. + (Simon Cruanes) + +- #13774: Fix for inaccurate live blocks/words stats in compaction. + (Sadiq Jaffer, report by KC Sivaramakrishnan and Jan Midtgaard, review by + Gabriel Scherer) + +- #13773: Ensure that shared pool owners are correctly set on pool adoption. + (Stephen Dolan, review by Sadiq Jaffer and Gabriel Scherer) + +* #11449, #13497: Add caml_stat_char_array_{to,of}_os functions allowing + conversion of string data which may contain NUL characters. Correct + implementation of caml_stat_strdup_to_utf16 to raise Out_of_memory instead of + returning of NULL (the behaviour of caml_stat_strdup_to_os was inconsistent + between Unix/Windows). + (David Allsopp, review by Nick Barnes, Antonin Décimo and Miod Vallat) + +- #13352: Concurrency refactors and cleanups. + (Antonin Décimo, review by Gabriel Scherer, David Allsopp, and Miod Vallat) + +- #13437: Stop using GetProcAddress to load functions that were not + available in older, now unsupported Windows versions. + (Antonin Décimo, review by Nicolás Ojeda Bär and David Allsopp) + +- #13470: Constify some function parameters, flags tables, and some + pointers in C code (take 3). + (Antonin Décimo, review by Stephen Dolan and Miod Vallat) + +- #13492: Parse the CAML_LD_LIBRARY_PATH environment variable for the + shared_libs_path item in `ocamlrun -config` in addition to displaying the + entries found in ld.conf. + (David Allsopp, review by Stephen Dolan) + +- #13496: Add missing .type and .size directives to main frametable to silence + warnings from the linker when using libasmrun_shared on amd64 and power. The + other backends already carried these directives. + (David Allsopp, review by Tim McGilchrist and Miod Vallat) + +- #13354: Use C99 flexible array member syntax everywhere. + (Antonin Décimo, review by Miod Vallat, Gabriel Scherer, and Xavier Leroy) + +- #11865, #13584: Fix a deadlock triggered by deleting C roots from C finalisers + (Stephen Dolan, report by Timothy Bourke, review by Mark Shinwell and Damien + Doligez) + +- #13613: Functions from caml/skiplist.h and caml/lf_skiplist.h no longer raise + Out_of_memory exceptions that the runtime could not handle. + (Guillaume Munch-Maccagnoni, review by Stephen Dolan) + +- #13575, #13635: Maintain OCaml frame pointers correctly even when using + C libraries that do not support them. + (Stephen Dolan and David Allsopp, report by Thomas Leonard, review by Tim + McGilchrist and Fabrice Buoro) + +- #13643: Allow values reachable from ephemeron keys to be collected by minor GC + (Stephen Dolan, review by François Bobot) + +- #13701: optimize `caml_continuation_use` based on #12735 + (Hugo Heuzard, review by KC Sivaramakrishnan) + +- #13227, #13714: Review of locking in the multicore runtime. Fix + deadlocks in runtime events and potential deadlocks with named + values. + (Guillaume Munch-Maccagnoni, review by Gabriel Scherer, tests by + Jan Midtgaard) + +- #13736: Fix major GC pacing bug triggered by synchronous collections. + (Nick Barnes, review by Damien Doligez and Tim McGilchrist) + +- #13827: Avoid re-marking ephemerons with trivial data. + (Stephen Dolan, review by Nick Barnes and Josh Berdine, benchmarking by + Nicolás Ojeda Bär) + +- #13300, #13861: introduce `Gc.ramp_up` to explicitly mark ramp-up + phases of memory consumption and avoid GC overwork. Ramp-up behaviors + are worse with OCaml 5 than with OCaml 4 due to higher sensitivity + to excessive pacing computations. Indicating ramp-up explicitly eliminates + the main known slowdown of OCaml 5 (relative to OCaml 4) for Coq/Rocq. + (Gabriel Scherer, review by Damien Doligez and Guillaume Munch-Maccagnoni, + report by Emilio Jesús Gallego Arias and Olivier Nicole) + +- #14057: Don't update memprof too early at the end of a minor GC. + (Nick Barnes, review by Damien Doligez). + +### Code generation and optimizations: + +- #13262, #14074: fix performance issue on Apple Silicon macOS by emitting + `stlr` instead of `dmb ishld; str`. + (KC Sivaramakrishnan, report by François Pottier, analysis by Frédéric Bour, + Xavier Leroy, Miod Vallat, Gabriel Scherer and Stephen Dolan, review by Miod + Vallat, Vincent Laviron and Xavier Leroy) + +* #13050, #14104, #14143: Use '$' instead of '.' to separate module names + in symbol names on macOS and Windows (including the Cygwin backend). + This changes mangling of OCaml identifiers on those operating systems from + `camlModule.name_NNN` to `camlModule$name_NNN`. Additionally it + changes the encoding of special characters from $xx (two hex digits) + to $$xx (two dollar signs followed by two hex digits). + (Tim McGilchrist, with contributions from Xavier Leroy, + reviewed by Xavier Leroy, Miod Vallat, Gabriel Scherer, + Nick Barnes and Hugo Heuzard) + +- #13807: Allow unaligned memory accesses on ARM64. + (Matthew Else, review by Xavier Leroy) + + +- #13565: less tagging in switches compiled to affine transformations + by ocamlopt. + (Gabriel Scherer and Clément Allain, review by Vincent Laviron, + report by Vesa Karvonen) + +- #13672 Avoid register stall on conversion instructions on amd64. + (Pierre Chambart, review by Gabriel Scherer and Xavier Leroy, + report by Patrick Nicodemus) + +- #13667: (originally #11162) Fix instr_size computation on arm64. + (Stephen Dolan and Tim McGilchrist, review by Xavier Leroy + and David Allsopp) + +- #13758: Propagate more value kinds in Flambda to allow more unboxing + (Vincent Laviron, review by Pierre Chambart) + +- #13759: Propagate more type information from clambda to cmm. + (Pierre Chambart, review by Gabriel Scherer) + +- #13735: Follow the behaviour of the C compiler to decide whether to emit the + `.size` and `.type` directives and the `.note.GNU-stack` section + (Samuel Hym, review by Miod Vallat, Antonin Décimo and Gabriel Scherer) + +### Other libraries: + +* #13435: On Windows, use system calls for `Filename.get_temp_dir_name` instead + of directly reading the environment, which in particular improves the security + of OCaml processes running in the SYSTEM security context by mitigating + privileged file operation attacks. For all other processes running with the + default environment (where `TEMP` is set), there is no discernible change. + (Antonin Décimo, review by Nicolás Ojeda Bär and David Allsopp) + +- #13504, #13625, #14223: Add `Thread.set_current_thread_name`. + (Romain Beauxis, review by Gabriel Scherer and Antonin Décimo) + +* #13376: Allow Dynlink.loadfile_private to load bytecode libraries with + internal dependencies + (Vincent Laviron, report by Stéphane Glondu, review by Nicolás Ojeda Bär + and Xavier Leroy) + +- #13429: add `Unix.sigwait`, a binding to the `sigwait` system call; + implement `Thread.wait_signal` using `Unix.sigwait`, and + `Thread.sigmask` using `Unix.sigprocmask`. + (Xavier Leroy, review by Antonin Décimo, Gabriel Scherer, Miod Vallat) + +- #13442, #13452: Fix Unix.getgroups for users belonging to more than 32 groups + when using musl + (Kate Deplaix, review by Gabriel Scherer, Antonin Décimo, Anil Madhavapeddy) + +- #13576: Introduce internal helpers to convert between time representations. + On Windows, prevent erroneously waiting for an unbounded time in Unix.select + if more than 64 file descriptors per lists are watched, or if watching + non-socket file descriptors, and a timeout longer than $2^{32}$ milliseconds + is used. Cap the timeout to $2^{32}$ milliseconds. + (Antonin Décimo, review by Gabriel Scherer and Miod Vallat) + +- #13921: Set cloexec correctly on CRT file descriptors created by the Unix + library on Windows. The inheritance on the underlying Win32 handles was + correctly set, but the book-keeping for the CRT was leaking the value of + non-inherited handles which combined with re-use of HANDLE values within + processes could appear to make a CRT file descriptor "re-open". + (David Allsopp, review by Nicolás Ojeda Bär) + +### Tools: + +- #13686: Fix Python debugger extensions (for LLDB and GDB) to restore + functionality broken by #13272 in 5.3. + (Nick Barnes, review by Tim McGilchrist Gabriel Scherer) + +- #12019: ocamlc: add `align_double` and `align_int64` to `ocamlc -config` + output. + (Romain Beauxis, review by David Allsopp) + +- #12642, #13536, #14184, #14192: in the toplevel, print shorter paths for + constructors and labels when only some modules along their path are open. + (Gabriel Scherer, review by Florian Angeletti) + +- #13199, #13485, #13665, #13762, #13965: Support running native debuggers in + ocamltest. + (Tim McGilchrist, Sebastien Hinderer, David Allsopp, Antonin Décimo, review by + Sebastien Hinderer, Gabriel Scherer, Antonin Décimo, and Tim McGilchrist) + +- #13764, #13779: add missing "-keywords" flag to ocamldep and ocamlprof + (Florian Angeletti, report by Prashanth Mundkur, review by Gabriel Scherer) + +- #13877: ocamldoc, add a `-latex-escape-underscore` flag to control the + escaping of `_` underscore in latex references (in order to be able to match + odoc behaviour). + (Florian Angeletti, review by Gabriel Scherer) + +- #13906: Add support for a `multicore` tag in ocamltest and use it for + tests that fail on mono-core systems. + (Stéphane Glondu, review by Nicolás Ojeda Bär) + +### Manual and documentation: + +- #13751: Document support for profiling with Linux perf and frame pointers. + (Tim McGilchrist, review by Gabriel Scherer and Miod Vallat) + +- #12452: Add examples to Stdlib.Fun documentation. + (Hazem ElMasry, review by Florian Angeletti and Gabriel Scherer) + +- #13924: Document how to put [@deprecated] on let bindings, constructors, etc + in the manual + (Valentin Gatien-Baron, review by Florian Angeletti) + + +- #13694: Fix name for caml_hash_variant in the C interface. + (Michael Hendricks) + +- #13732: Document that custom finalizers must not access the OCaml heap, etc. + (Josh Berdine, review by Stephen Dolan and Guillaume Munch-Maccagnoni) + +### Type system + +* #13830: fail rather than silently create abstract module types when avoiding + (i.e. hiding) signature items, as in: + ```ocaml + module N = struct + open (struct type t = A | B end) + module type T = sig type u = t * int end + end + ``` + Before, it was succeeding with `module N : sig module type T end`, now it + fails. Similarly for anonymous functor calls (of the form `F(struct ... end)) + (Clement Blaudeau, review by Gabriel Scherer) + +### Compiler user-interface and warnings: + +- #13817: align spellchecking hints with the possibly misspelled identifier/ + Error: Unbound type constructor "aray" + Hint: Did you mean "array"? + (Florian Angeletti, suggestion by Daniel Bünzli, review by Gabriel Scherer) + +- #13587: Enable native backend on x86_64 GNU/Hurd. + (Samuel Thibault, review by Antonin Décimo, Sébastien Hinderer and Miod + Vallat) + +- #13663: Improve the error message when GADT parameter variance cannot be + checked. + (Stefan Muenzel, review by Gabriel Scherer and Florian Angeletti) + +- #13646: Improve the error messages when a recursive module type + references another recursive module type. + (Stefan Muenzel, review by Florian Angeletti and Gabriel Scherer) + +- #13702, #13865: Specialized error messages for functors appearing in contexts + where non-functors were expected `module A: sig ... end = Set.Make` + (and the reverse) + (Florian Angeletti, report by Jeremy Yallop, review by Gabriel Scherer) + +- #13788, #13813: Keep the module context in spellchecking hints. + `Fun.protact` now prompts `Did you mean "Fun.protect?"` rather than + `Did you mean "protect?"`. + (Florian Angeletti, suggestion by Daniel Bünzli, review by Gabriel Scherer) + + +- #13428: support dump=[source | parsetree | lambda | ... | cmm | ...] + in OCAMLRUNPARAM + (Gabriel Scherer, review by Vincent Laviron) + +- #13493: Clearer error message in ocamlc for conflicting link options for + C stubs when shared libraries are not available. + (David Allsopp, review by Gabriel Scherer) + +- #13563, lighter inline code styling for output without bold support: inline + code is no longer printed as "..." to avoid confusion with OCaml strings. + (Florian Angeletti, review by Richard Eisenberg) + +- #13568, composable formatting for warning and alert messages + (Florian Angeletti, review by Richard Eisenberg) + +- #13601: Enable natdynlink on x86_64 GNU/Hurd + (Samuel Thibault, review by Sébastien Hinderer) + +- #13809: Distinguish `(module M : S)` and `(module M) : (module S)` and + change locations of error messages when `S` is ill-typed in `(module S)` + (Samuel Vivien, review by Florian Angeletti and Gabriel Scherer) + +- #13814, 13898: Add an `unused-type-declaration` warning when using + a `t as 'a` with no other occurences of `'a` + (Samuel Vivien, review by Florian Angeletti, Kate Deplaix) + +- #13818: better delimited hints in error message + (Florian Angeletti, review by Gabriel Scherer) + +### Internal/compiler-libs changes: + +- #13539, #13776: Use nanosleep instead of usleep or select, if available. + (Antonin Décimo, review by Miod Vallat and Gabriel Scherer) + +- #13748: Add a .editorconfig file for basic editor auto-configuration. + (Antonin Décimo, review by Gabriel Scherer and David Allsopp) + +- #13302, #14236: Store locations of longidents components + (Ulysse Gérard and Jules Aguillon, review by Jules Aguillon + and Florian Angeletti) + + +- #13314: Comment the code of Translclass + (Vincent Laviron and Nathanaëlle Courant, review by Olivier Nicole) + +- #13362: reimplement Floatarray.concat in C (`caml_floatarray_concat`), + matching the implementation of Array.concat. + (Gabriel Scherer, review by Nicolás Ojeda Bär) + +- #13624: Added location to exception definitions and type extensions + (Samuel Vivien, review by Gabriel Scherer) + +- #13425: undocumented -dmatchcomp flag for the debug + output of the pattern-matching compiler + (Gabriel Scherer, review by Vincent Laviron and Nicolás Ojeda Bär) + +- #13460: introduce a variant of all predefined types + (Gabriel Scherer, review by Ulysse Gérard and Florian Angeletti) + +- #13457, #13537: Annotate alloc/free open/close pairs of functions + with compiler attributes for static analysis. + (Antonin Décimo, review by Gabriel Scherer and Florian Angeletti) + +- #13464: Use generic types in call to `subtype`. This improves + inference of type-directed disambiguation in principal mode. + (Richard Eisenberg, review by Jacques Garrigue) + +- #13606: Fix Numbers.Int_base.compare + (Mark Shinwell, review by Vincent Laviron) + +- #13612: Refactor `type_application` + (Ulysse Gérard, Leo White, review by Antonin Décimo, Gabriel Scherer, + Samuel Vivien, Florian Angeletti and Jacques Garrigue) + +- #13744: Refactor in `collect_apply_args` + (Samuel Vivien, review by Florian Angeletti and Gabriel Scherer) + +- #13787: a new -dcanonical-ids option to show canonicalized identifier stamps + in -d{lambda,cmm,...} outputs. + (Gabriel Scherer, review by Vincent Laviron and David Allsopp, + suggested by David Allsopp) + +- #13820: Add a new option -i-variance to print the variance of every + type parameter; bivariance is printed as `+-`, and for consistency, + parser is modified too to accept `+-` and `-+` as `type_variance`. + (Takafumi Saikawa and Jacques Garrigue, review by Florian Angeletti) + +- #13828: Apply BUILD_PATH_PREFIX_MAP to Sys.argv.(0) before storing it in .cmt + and .cmti files. + (David Allsopp, review by Daniel Bünzli and Gabriel Scherer) + +- #13848: Add all paths components to the cmt files indexes + (Ulysse Gérard, review by Florian Angeletti) + +- #13854: Make the parser set loc_ghost more correctly, for `keyword%extension` + syntax + (Valentin Gatien-Baron, review by Florian Angeletti) + +- #13856: Add a new indirection in types AST called `package` that stores the + content of a `Tpackage` node + (Samuel Vivien, review by Florian Angeletti) + +- #13866: Modified occurence check that prevents recursive types for it to see + the checked type as a graph rather than a tree + (Samuel Vivien, report by Didier Remy, review by Florian Angeletti + and Jacques Garrigue) + +- #13884 Correctly index modules in constructors and labels paths + (Ulysse Gérard, review by Florian Angeletti) + +- #13946: refactor the #install_printer code in the debugger and toplevel + (Pierre Boutillier, review by Gabriel Scherer and Florian Angeletti) + +- #13952: check and document the correctness of `caml_domain_alone ()`. + (Gabriel Scherer, review by KC Sivaramakrishnan, report by Olivier Nicole) + +- #13971: Keep generalized structure from patterns when typing `let` + (Leo White, review by Samuel Vivien and Florian Angeletti) + +* #13972: Renamed the `-no-alias-deps` flag internal representation to + `no_alias_deps` instead of `transparent_modules`. + (Clement Blaudeau, review by Gabriel Scherer) + +### Build system: + +* #13526, #13789, #13804: Simplify the build of cross compilers + This replaces the configure `--with-target-bindir` option by an equivalent + `TARGET_BINDIR` variable + (Samuel Hym, review by Miod Vallat, Xavier Leroy, Antonin Décimo and Sébastien + Hinderer) + + +- #13431: Simplify github action responsible for flagging PRs with + the `parsetree-changes` label and extend it to mention the @ppxlib-dev + team. + (Nathan Rebours, review by Florian Angeletti) + +- #13494: Use native symlinks on Windows for the OCaml installation, reducing + disk usage considerably. + (David Allsopp, review by Nicolás Ojeda Bär and Gabriel Scherer) + +- #13789: Strictly validate the host and target triplets when building for the + Windows ports to be *-*-cygwin, *-w64-mingw32* or *-pc-windows. Other Cygwin + variants used to be rejected - other MSVC and mingw-w64 variants are now + rejected too. + (David Allsopp, review by Antonin Décimo and Gabriel Scherer) + +### Bug fixes: + +- #13819: Fix field initialisation bug in runtime events subsystem. + (Nick Barnes, review by Gabriel Scherer). + +- #13977: Pass `-fPIC` when compiling C files using `ocamlopt`. This was a + regression in OCaml 5.3. + (Nicolás Ojeda Bär, review by Daniel Bünzli and Gabriel Scherer) + +- #13957: Allow 'effect' as attribute id. + (Pieter Goetschalckx, review by Nicolás Ojeda Bär and Florian Angeletti) + +- #13691 #13895: Make four globals underlying Gc.control atomic to avoid C data + races against them. + (Jan Midtgaard, review by Miod Vallat, Sadiq Jaffer and Antonin Décimo) + +- #13454: Output a correct trace of the C_CALLN bytecode. + (Miod Vallat, review by Antonin Décimo) + +- #13595: Use x19 as Canonical Frame Address (CFA) register. This would cause + backtraces to be truncated when calling no alloc C code. + (Tim McGilchrist, report by Nick Barnes, review by Nick Barnes) + +* #13605: Fix ungenerated constraints when they where impossible due to polyvars + issues + (Samuel Vivien, review by Florian Angeletti, Richard Eisenberg + and Jacques Garrigue) + +- #13677, #13679: domain.c: remove backup_thread_running to simplify + concurrent state updates to the backup thread status. + (Gabriel Scherer, review by Jan Midtgaard and Miod Vallat, + report by Jan Midtgaard) + +- #13896, #14098: ocamldoc, do not wrap module description in a paragraph tag + inside the table of modules + (Florian Angeletti, report by John Whitington, review by Gabriel Scherer) + +- #13703: wrong explanation for some polymorphic-variant subtyping errors + (Gabriel Scherer, review by Jacques Garrigue, + report by Wiktor Kuchta and Richard Eisenberg) + +- #13710: Support unicode identifiers in comments. + (Pieter Goetschalckx, review by Florian Angeletti and Gabriel Scherer) + +- #13763: Track type of variables bound by as-patterns + (Leo White, review by Gabriel Scherer, port by Vincent Laviron) + +- #13778, #13811: do not warn for unused type declarations when the type is used + in a first-class module type (`module S with type t = int)`. + (Florian Angeletti, report by Nicolás Ojeda Bär, review by Gabriel Scherer) + +- #13790: Fix bytecode-only build of Cygwin when flexlink is being bootstrapped + with the compiler. + (David Allsopp, review by Antonin Décimo and Miod Vallat) + +- #13812: Add forgotten check about the validity of the type variable name on + the right-hand side of `_ as _`. + (Samuel Vivien, review by Gabriel Scherer) + +- #13845: Fix bug in untypeast/pprintast for value bindings with polymorphic + type annotations. + (Chris Casinghino, review by Florian Angeletti and Gabriel Scherer) + +- #13930, #13933: Fix bugs in recursive values definitions involving + lazy values that have already been evaluated. + (Gabriel Scherer, review by Vincent Laviron, report by Vincent Laviron) + +- #13867: Fix bug with some recursive bindings of lazy values. + (Guillaume Bury and Vincent Laviron, review by Stefan Muenzel + and Gabriel Scherer) + +- #13931: fix bugs in nested recursive value definitions. + (Gabriel Scherer, review by Vincent Laviron, + report by Vincent Laviron) + +- #13875, #13878: Add dedicated constructor for mutable variable access in + Cmm to prevent bugs linked to incorrect handling of coeffects. + (Vincent Laviron, review by Gabriel Scherer) + +- #13880: Make object stat counters atomic + (Dimitris Mostrous, review by Gabriel Scherer and Nicolás Ojeda Bär) + +- #13172, #13829: Fix a missing check of illegal recursive module-type + definitions + (Clement Blaudeau, review by Florian Angeletti) + +- #13541, #13777: Using C++11 `thread_local` causes name-mangling + issues when linking with flexlink on Cygwin. + (Antonin Décimo and David Allsopp, report by Kate Deplaix) + +* #13874, #13882: Make evaluation order consistent for applications when using + the non-flambda native compiler + (Vincent Laviron, report by Jean-Marie Madiot, review by Gabriel Scherer) + +- #13942: Fix assertion on empty array case + (Olivier Nicole, review by Gabriel Scherer) + +- #13950: Avoid tearing in `Array.sub` + (Gabriel Scherer and Olivier Nicole, report by Jan Midtgaard, review by + Gabriel Scherer) + +- #13928, #13944: Fix handling of excessively nested unboxed types + (Vincent Laviron, review by Gabriel Scherer) + +- #13987: Remove a spurious TSan report in case of benign data race between + major GC read and write from the mutator (fixes #13427) + (Olivier Nicole, report by Thomas Leonard, review by Gabriel Scherer) + +- #14007, #14015: Fix memory corruption when an exception is raised during + demarshaling. + (Benoît Vaugon, review by David Allsopp and Gabriel Scherer) + +- #14025: fix data race between compaction and domain termination + (Gabriel Scherer, review by Jan Midtgaard, + report by Jan Midtgaard) + +- #13956 Fix a regression introduced in #13308 triggering wrong unused warnings. + (Ulysse Gérard, review by Florian Angeletti) + +- #14070: also point to label mismatches in error messages for labelled tuples + (Florian Angeletti, review by Gabriel Scherer) + +- #14088, #14091: fix non-deterministic code generation in + matching.ml (backport of rescript-lang/rescript#7557) + (Christiano Calgano, review by Gabriel Scherer and Vincent Laviron) + +- #14105: Fix a loop in Pprintast that could result in a hang when printing + constructor `(::)` in isolation. + (Ulysse Gérard, review by Nicolás Ojeda Bär and Florian Angeletti) + +- #14108: toplevel, fix a typo in directive type mismatch + (Florian Angeletti, review by Gabriel Scherer) + +- #13586, #14093: Fix closing an out_channel during flush + (Stephen Dolan, report by Jan Midtgaard, investigation by Nick Roberts, + review by Antonin Décimo and Miod Vallat) + +- #14101, #14139: define atomic helper types inside `caml/misc.h` to improve + header compatibility with C++ + (Florian Angeletti, report by Kate Deplaix, review by Gabriel Scherer) + +- #14135: Fix a rare internal typechecker error when combining recursive + modules, polymorphic fields or methods, and constrained type parameters. + (Florian Angeletti, review by Gabriel Scherer) + +- #14169: runtime, fix cache miss within the stack fragments cache + (Florian Angeletti, review by Gabriel Scherer) + +- #14196, #14197: ocamlprof: do not instrument unreachable clauses + (Gabriel Scherer, review by Nicolás Ojeda Bär, report by Ali Caglayan) + +- #14200, #14202 : bad variance check with private aliases + (Jacques Garrigue, report and review by Stephen Dolan) + +- #14061, #14209: fix a memory-ordering bug in Weak.set that could + result in uninitialized memory seen by Weak.get on another domain. + (Damien Doligez, review by Gabriel Scherer) + +- #14214, #14221: fix a confused error message for module inclusions, + functor error messages were missing some type equalities potentially leading + to nonsensical "type t is not compatible with type t" submessage + (Florian Angeletti, report by Basile Clément, review by Gabriel Scherer) + +- #14238: Fix certain variadic macros in misc.h which could trigger C warnings + under certain conditions in prerelease versions of OCaml 5.4. + (Antonin Décimo, review by Nicolás Ojeda Bär) + +- #14287: Bugfix for GC root mishandling in memprof.c + (Stephen Dolan, review by Leo White) + OCaml 5.3.0 (8 January 2025) ---------------------------- @@ -15,9 +768,6 @@ OCaml 5.3.0 (8 January 2025) ### Language features: -- #12828, #13283: Add short syntax for dependent functor types `(X:A) -> ...` - (Jeremy Yallop, review by Nicolás Ojeda Bär and Gabriel Scherer) - - #12309, #13158: Add syntax support for deep effect handlers (Leo White, Tom Kelly, Anil Madhavapeddy, KC Sivaramakrishnan, Xavier Leroy and Florian Angeletti, review by the same, Hugo Heuzard, and Ulysse Gérard) @@ -27,6 +777,10 @@ OCaml 5.3.0 (8 January 2025) (Xavier Leroy and Florian Angeletti, review by Daniel Bünzli and Jules Aguillon) + +- #12828, #13283: Add short syntax for dependent functor types `(X:A) -> ...` + (Jeremy Yallop, review by Nicolás Ojeda Bär and Gabriel Scherer) + ### Type system - #11891, #12507: Allow to name new locally abstract types in constructor type @@ -35,6 +789,13 @@ OCaml 5.3.0 (8 January 2025) ### Runtime system: +- #11911, #12923: Multicore statistical memory profiling. + This restores a notable OCaml 4 feature that was missing + in OCaml 5. + (Nick Barnes, review by Stephen Dolan, Jacques-Henri Jourdan + and Guillaume Munch-Maccagnoni). + + - #13419: Fix memory bugs in runtime events system. (B. Szilvasy and Nick Barnes, review by Miod Vallat, Nick Barnes, Tim McGilchrist, and Gabriel Scherer) @@ -53,12 +814,6 @@ OCaml 5.3.0 (8 January 2025) (KC Sivaramakrishnan, review by Guillaume Munch-Maccagnoni, Miod Vallat, Gabriel Scherer, David Allsopp, request by Zachary Yedidia). -- #11911, #12923: Multicore statistical memory profiling. - This restores a notable OCaml 4 feature that was missing - in OCaml 5. - (Nick Barnes, review by Stephen Dolan, Jacques-Henri Jourdan - and Guillaume Munch-Maccagnoni). - - #12579: OS-based Synchronisation for Stop-the-World Sections (B. Szilvasy, review by Miod Vallat, Nick Barnes, Olivier Nicole, Gabriel Scherer and Damien Doligez) @@ -148,8 +903,9 @@ OCaml 5.3.0 (8 January 2025) (Xavier Leroy, report by Jan Midtgaard, analysis by Stephen Dolan, review by Miod Vallat) -- #13407: Add Runtime_events.EV_EMPTY_MINOR - (Thomas Leonard) +- #13407: Add Runtime_events.EV_EMPTY_MINOR. + (Thomas Leonard, review by KC Sivaramakrishnan, Sadiq Jaffer and + Gabriel Scherer) - #13522: Confirm runtime events ring is still active after callback. (KC Sivaramakrishnan, review by Sadiq Jaffer and Miod Vallat) @@ -186,6 +942,11 @@ OCaml 5.3.0 (8 January 2025) ### Standard library: +- #12885: move Dynarray to an unboxed representation + (Gabriel Scherer, suggestions by Vincent Laviron, + review by Olivier Nicole and Simon Cruanes, Yann Leray, Alain Frisch) + + - #12884: Add `Queue.drop` (Léo Andrès, review by Nicolás Ojeda Bär and Gabriel Scherer) @@ -203,10 +964,6 @@ OCaml 5.3.0 (8 January 2025) (Kate Deplaix and Oscar Butler-Aldridge, review by Nicolás Ojeda Bär, Craig Ferguson and Gabriel Scherer) -- #12885: move Dynarray to an unboxed representation - (Gabriel Scherer, suggestions by Vincent Laviron, - review by Olivier Nicole and Simon Cruanes, Yann Leray, Alain Frisch) - - #13047: Add Sys.poll_actions to (only) run pending runtime actions. (Nick Barnes, review by Gabriel Scherer, Guillaume Munch-Maccagnoni, and Vincent Laviron) @@ -225,8 +982,8 @@ OCaml 5.3.0 (8 January 2025) - #13197: Dynarray.blit, which allows to extend the destination dynarray (0 <= dst_pos <= dst_length). - (Gabriel Scherer, report by Hazem Elmasry, - review by Olivier Nicole, Hazem Elmasry and Nicolás Ojeda Bär) + (Gabriel Scherer, report by Hazem ElMasry, + review by Olivier Nicole, Hazem ElMasry and Nicolás Ojeda Bär) * #13240: Add Uchar.seeded_hash, Change Uchar.hash implementation. Previously, Uchar.hash was aliased to Uchar.to_int. If you need that behavior, @@ -335,7 +1092,7 @@ OCaml 5.3.0 (8 January 2025) - #13469, #13474, #13535: Document that [Hashtbl.create n] creates a hash table with a default minimal size, even if [n] is very small or negative. - (Antonin Décimo, Nick Bares, report by Nikolaus Huber and Jan Midtgaard, + (Antonin Décimo, Nick Barnes, report by Nikolaus Huber and Jan Midtgaard, review by Florian Angeletti, Anil Madhavapeddy, Gabriel Scherer, and Miod Vallat) @@ -399,6 +1156,16 @@ OCaml 5.3.0 (8 January 2025) ### Internal/compiler-libs changes: +- #13286: Distinguish unique identifiers `Shape.Uid.t` according to their + provenance: either an implementation or an interface. + (Ulysse Gérard, review by Florian Angeletti and Leo White) + +- #13308: keep track of relations between declaration in the cmt files. This is + useful information for external tools for navigation and analysis purposis. + (Ulysse Gérard, Florian Angeletti, review by Florian Angeletti and Gabriel + Scherer) + + - #11129, #11148: enforce that ppxs do not produce `parsetree`s with an empty list of universally quantified type variables (`. int -> int` instead of `'a . int -> int'`) @@ -445,7 +1212,7 @@ OCaml 5.3.0 (8 January 2025) - #13067: rework volatile memory access rules under TSan to consider properly aligned smaller-than-register read operations as atomic, which gets rid of false positives on s390x - (Miod Vallat, review by Fabien Buoro) + (Miod Vallat, review by Fabrice Buoro) - #13162: Use quoted strings to clarify code being generated. (Antonin Décimo, review by Miod Vallat and Gabriel Scherer) @@ -467,18 +1234,9 @@ OCaml 5.3.0 (8 January 2025) (Oleg Kiselyov, Gabriel Scherer and Florian Angeletti, review by Jeremy Yallop) -- #13286: Distinguish unique identifiers `Shape.Uid.t` according to their - provenance: either an implementation or an interface. - (Ulysse Gérard, review by Florian Angeletti and Leo White) - - #13289: Use C99 for loop to reduce the scope of the for loop iterator. (Antonin Décimo, review by Miod Vallat and Gabriel Scherer) -- #13308: keep track of relations between declaration in the cmt files. This is - useful information for external tools for navigation and analysis purposis. - (Ulysse Gérard, Florian Angeletti, review by Florian Angeletti and Gabriel - Scherer) - - #13336: compiler-libs, split the `Printtyp` in three to only keep "user-friendly" functions in the `Printtyp` module. (Florian Angeletti, review by Gabriel Scherer) @@ -669,7 +1427,7 @@ OCaml 5.3.0 (8 January 2025) - #13495, #13514: Fix typechecker crash while typing objects (Jacques Garrigue, report by Nicolás Ojeda Bär, review by - Nicolas Ojeda Bär, Gabriel Scherer, Stephen Dolan, Florian Angeletti) + Nicolás Ojeda Bär, Gabriel Scherer, Stephen Dolan, Florian Angeletti) - #13391, #13551: fix a printing bug with `-dsource` when using raw literal inside a locally abstract type constraint @@ -908,8 +1666,7 @@ OCaml 5.2.0 (13 May 2024) - #12769: Unify MSVC and MinGW-w64 code paths, by always using WinAPI directly. - (David Allsopp, Antonin Décimo, and Samuel Hym, review by Nicolas - Ojeda Bar) + (David Allsopp, Antonin Décimo, and Samuel Hym, review by Nicolás Ojeda Bär) - #11911, #12382, #12383: Restore statmemprof functionality in part (backtrace buffers, per-thread and per-domain data structures, @@ -1035,7 +1792,7 @@ OCaml 5.2.0 (13 May 2024) * #12455: `Array.make_matrix dimx dimy f` now raises `Invalid_argument` when `dimx = 0 && dimy < 0` This was already specified but not enforced. - (Glen Mével, report by Jeremy Yallop, review by Nicolas Ojeda Bar) + (Glen Mével, report by Jeremy Yallop, review by Nicolás Ojeda Bär) - #12459: Add `Random.int_in_range`, `Random.int32_in_range`, `Random.int64_in_range`, `Random.nativeint_in_range`, @@ -1690,7 +2447,7 @@ OCaml 5.1.0 (14 September 2023) `Seq.find_mapi`, `Seq.find_index`, `Array.find_mapi`, `Array.find_index`, `Float.Array.find_opt`, `Float.Array.find_index`, `Float.Array.find_map`, `Float.Array.find_mapi`. - (Tima Kinsart, review by Daniel Bünzli and Nicolás Ojeda Bär) + (T. Kinsart, review by Daniel Bünzli and Nicolás Ojeda Bär) - #11410: Add Set.to_list, Map.to_list, Map.of_list, `Map.add_to_list: key -> 'a -> 'a list t -> 'a list t`. diff --git a/HACKING.adoc b/HACKING.adoc index 0107e9ce..ab0337c2 100644 --- a/HACKING.adoc +++ b/HACKING.adoc @@ -188,14 +188,14 @@ has excellent documentation. Makefile.common:: common Makefile definitions README.adoc:: general information on the compiler distribution README.win32.adoc:: general information on the Windows ports of OCaml - VERSION:: version string. Run `make configure` after changing. + VERSION:: version string. Run `tools/autogen` after changing. asmcomp/:: native-code compiler and linker boot/:: bootstrap compiler - build-aux/: autotools support scripts + build-aux/:: autotools support scripts bytecomp/:: bytecode compiler and linker compilerlibs/:: the OCaml compiler as a library configure:: configure script - configure.ac: autoconf input file + configure.ac:: autoconf input file debugger/:: source-level replay debugger driver/:: driver code for the compilers flexdll/:: git submodule -- see link:README.win32.adoc[] @@ -237,6 +237,16 @@ the original commit in the commit message. git cherry-pick -x -m 1 ---- +=== Code style + +Keep the style of the code you’re modifying. We don’t enforce the use of +automated formatters. For OCaml code, +https://github.com/OCamlPro/ocp-indent[ocp-indent] has been used. +We use https://editorconfig.org/[EditorConfig] for simple styling. Lots of +editors support EditorConfig +https://editorconfig.org/#pre-installed[out-of-the-box], or with +https://editorconfig.org/#download[plugins]. + [#opam-switch] === Testing with `opam` @@ -575,14 +585,41 @@ runs much faster than a full `./tools/check-typo`, typically instantly. You can also setup a git commit-hook to automatically run `check-typo` on the changes you commit, by copying the file -`tools/pre-commit-githook` to `.git/hooks/pre-commit`. If changes in a commit -alter the `configure` script, the hook also checks that committed `configure` -script is up-to-date. +`tools/pre-commit-githook` to `.git/hooks/pre-commit`. If changes in a +commit alter the `configure` script, the hook also checks that the +committed `configure` script is up-to-date. Some files need special rules to opt out of `check-typo` checks; this is specified in the `.gitattributes` file at the root of the repository, using `typo.foo` attributes. +===== Regenerating the `configure` script + +The `configure` script may be regenerated by running `tools/autogen`, +with GNU Autoconf installed. + +If you're using a version of GNU Autoconf that differs from our CI, +then the generated `configure` script might differ too. The latest +Ubuntu LTS packages may be used as a reasonable base to generate this +file. Using a Docker image with GNU Autoconf installed, and `git +rebase --exec`, one can properly regenerate the `configure` script for +each commit in a branch. + +[source,sh] +---- +docker build -t ocaml-make-configure:latest - <<'EOF' +# syntax=docker/dockerfile:1 +FROM ubuntu:latest +RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt update && apt-get --no-install-recommends install -y autoconf make +WORKDIR /mnt +ENTRYPOINT ["tools/autogen"] +EOF +git rebase trunk --exec "docker run --rm -it -v $PWD:/mnt ocaml-make-configure:latest" +---- + ==== GitHub's Continuous Integration: GitHub Actions and AppVeyor The scripts that are run on GitHub Actions are described in @@ -630,6 +667,24 @@ the following environment variables, which should be set in link:appveyor.yml[]: - `CYGWIN_DIST`. Default: `64`. Either `64` or `32`, selects 32-bit or 64-bit Cygwin as the build environment. +==== GitHub Actions Continuous Integration (CI) + +We use GitHub Actions workflows to test the OCaml compiler and runtime +in various settings. Some tests are not run by default and are +triggered by setting a label on the pull request. See below: + +- `CI: Full matrix`: expands the test matrix considerably with additional + configurations; useful for PRs which affect the "systems" side of the + compiler; +- `CI: Skip testsuite`: turns the tesuite *off* for a PR, which can be useful + for PRs which do not affect the compiler _at all_ or while a specific failure + is being investigated; +- `run-crosscompiler-tests`: build various cross-compilers and test them; +- `run-thread-sanitizer`: build the distribution with the Thread + Sanitizer (TSAN), and run the whole testsuite instrumented with TSAN; +- `run-multicoretests`: run an extensive testsuite convering multicore + features. + ==== INRIA's Continuous Integration (CI) INRIA provides a Jenkins continuous integration service that OCaml diff --git a/INSTALL.adoc b/INSTALL.adoc index bf17760d..69435c8e 100644 --- a/INSTALL.adoc +++ b/INSTALL.adoc @@ -198,3 +198,59 @@ and sanity checks that could help you pinpoint the problem. requirements for mathematical accuracy, numerical precision, and proper handling of mathematical corner cases and error conditions may need to consider running their code on a platform with better C99 support. + +== (experimental) Building a cross compiler + +A cross compiler is a compiler that runs on some machine, named the _host_, but +generates code for a different machine, named the _target_. To build a cross +compiler you first need to have a non-cross compiler of the same version +installed in your `$PATH`. You can install that standard non-cross compiler by +any means, for instance using `opam` or compiling it manually from source. Note +though that the version of the non-cross compiler must match the version of the +cross compiler since the cross compiler will be compiled by the non-cross +compiler: the cross compiler will combine code compiled from source with the +non-cross runtime (the build of the cross compiler will build only the runtime +for the target machine). + +To start the build of the cross compiler, call `configure` with the `target` +triplet, possibly setting where the library will be installed on the target by +setting the `TARGET_LIBDIR` variable. For instance, with the GCC MinGW cross +compiler installed, one may use: + +.... +./configure --prefix=$PWD/cross --target=x86_64-w64-mingw32 TARGET_LIBDIR='C:\somedir' ... +make crossopt -j +make installcross +.... + +Notes: + +* It is advisable to choose a `prefix` that will not end up in installing the + cross compiler in your `$PATH`: `ocamlopt` should always invoke the standard + non-cross compiler, not the cross one. To call the cross compiler, you will + just use its full path or add temporarily its installation directory to your + `$PATH`. +* The cross compiler to Windows needs `flexdll` to link the binaries. A simple + way to get it is to use the `flexdll` submodule (`git submodule update --init` + if needed) and let the `crossopt` target bootstrap `flexdll`. + +=== Using the cross compiler + +If you have built a cross compiler to a Unix target, you can simply run as +usual: + +.... +cross/bin/ocamlopt.opt -o test test.ml +.... + +If you have built a Unix-to-Windows cross compiler, you must first make sure +that `ocamlopt` can find the `flexlink` executable in `$PATH` when it needs to +link. Boostrapping `flexdll` builds a `flexlink.exe` (note the `.exe`!), so you +can: + +.... +ln -s flexlink.exe cross/bin/flexlink +(export PATH="$PWD/cross/bin:$PATH"; ocamlopt.opt.exe -o test.exe test.ml) +.... + +or any other possibility to make sure `ocamlopt` can invoke `flexlink`. diff --git a/Makefile b/Makefile index f7fffdce..4ce5da65 100644 --- a/Makefile +++ b/Makefile @@ -119,6 +119,7 @@ typing_SOURCES = \ typing/outcometree.mli \ typing/shape.mli typing/shape.ml \ typing/types.mli typing/types.ml \ + typing/data_types.mli typing/data_types.ml \ typing/rawprinttyp.mli typing/rawprinttyp.ml \ typing/gprinttyp.mli typing/gprinttyp.ml \ typing/btype.mli typing/btype.ml \ @@ -644,9 +645,10 @@ flexlink.byte$(EXE): $(FLEXDLL_SOURCES) OCAMLOPT='$(value BOOT_OCAMLC) $(USE_RUNTIME_PRIMS) $(USE_STDLIB)' \ flexlink.exe support cp $(FLEXDLL_SOURCE_DIR)/flexlink.exe $@ + cp $(addprefix $(FLEXDLL_SOURCE_DIR)/, $(FLEXDLL_OBJECTS)) $(ROOTDIR) partialclean:: - rm -f flexlink.byte flexlink.byte.exe + rm -f flexlink.byte flexlink.byte.exe flexdll_*.o flexdll_*.obj $(BYTE_BINDIR)/flexlink$(EXE): \ boot/ocamlrun$(EXE) flexlink.byte$(EXE) | $(BYTE_BINDIR) @@ -654,7 +656,6 @@ $(BYTE_BINDIR)/flexlink$(EXE): \ # Start with a copy to ensure that the result is always executable cp boot/ocamlrun$(EXE) $@ cat flexlink.byte$(EXE) >> $@ - cp $(addprefix $(FLEXDLL_SOURCE_DIR)/, $(FLEXDLL_OBJECTS)) $(BYTE_BINDIR) partialclean:: rm -f $(BYTE_BINDIR)/flexlink $(BYTE_BINDIR)/flexlink.exe @@ -672,8 +673,9 @@ ifeq "$(BOOTSTRAPPING_FLEXDLL)" "true" # The recipe for runtime/ocamlruns$(EXE) also produces runtime/primitives boot/ocamlrun$(EXE): runtime/ocamlruns$(EXE) -$(foreach runtime, ocamlrun ocamlrund ocamlruni, \ - $(eval runtime/$(runtime)$(EXE): | $(BYTE_BINDIR)/flexlink$(EXE))) +$(foreach runtime, ocamlrun$(EXE) ocamlrund$(EXE) ocamlruni$(EXE) \ + libcamlrun_shared$(EXT_DLL) libasmrun_shared$(EXT_DLL), \ + $(eval runtime/$(runtime): | $(BYTE_BINDIR)/flexlink$(EXE))) tools/checkstack$(EXE): | $(BYTE_BINDIR)/flexlink$(EXE) else @@ -715,9 +717,9 @@ compare: # The core system has to be rebuilt after bootstrap anyway, so strip ocamlc # and ocamllex, which means the artefacts should be identical. mv ocamlc$(EXE) ocamlc.tmp - $(OCAMLRUN) tools/stripdebug -all ocamlc.tmp ocamlc$(EXE) + $(OCAMLRUN) tools/stripdebug$(EXE) -all ocamlc.tmp ocamlc$(EXE) mv lex/ocamllex$(EXE) ocamllex.tmp - $(OCAMLRUN) tools/stripdebug -all ocamllex.tmp lex/ocamllex$(EXE) + $(OCAMLRUN) tools/stripdebug$(EXE) -all ocamllex.tmp lex/ocamllex$(EXE) rm -f ocamllex.tmp ocamlc.tmp @if $(CMPCMD) boot/ocamlc ocamlc$(EXE) \ && $(CMPCMD) boot/ocamllex lex/ocamllex$(EXE); \ @@ -745,7 +747,7 @@ promote-cross: promote-common # Promote the newly compiled system to the rank of bootstrap compiler # (Runs on the new runtime, produces code for the new runtime) .PHONY: promote -promote: PROMOTE = $(OCAMLRUN) tools/stripdebug -all +promote: PROMOTE = $(OCAMLRUN) tools/stripdebug$(EXE) -all promote: promote-common rm -f boot/ocamlrun$(EXE) cp runtime/ocamlrun$(EXE) boot/ocamlrun$(EXE) @@ -884,7 +886,6 @@ flexlink.opt$(EXE): \ cp $(FLEXDLL_SOURCE_DIR)/flexlink.exe $@ rm -f $(OPT_BINDIR)/flexlink$(EXE) cd $(OPT_BINDIR); $(LN) $(call ROOT_FROM, $(OPT_BINDIR))/$@ flexlink$(EXE) - cp $(addprefix $(BYTE_BINDIR)/, $(FLEXDLL_OBJECTS)) $(OPT_BINDIR) else @@ -1372,7 +1373,7 @@ runtime/caml/opnames.h : runtime/caml/instruct.h $(V_GEN)tr -d '\r' < $< | \ sed -e '/\/\*/d' \ -e '/^#/d' \ - -e 's/enum /static char * names_of_/' \ + -e 's/enum /static char const * const names_of_/' \ -e 's/{$$/[] = {/' \ -e 's/\([[:upper:]][[:upper:]_0-9]*\)/"\1"/g' > $@ @@ -1383,24 +1384,18 @@ runtime/caml/jumptbl.h : runtime/caml/instruct.h sed -n -e '/^ /s/ \([A-Z]\)/ \&\&lbl_\1/gp' \ -e '/^}/q' > $@ -# These are provided as a temporary shim to allow cross-compilation systems -# to supply a host C compiler and different flags and a linking macro. -SAK_CC ?= $(CC) -SAK_CFLAGS ?= $(OC_CFLAGS) $(CFLAGS) $(OC_CPPFLAGS) $(CPPFLAGS) -SAK_LINK ?= $(MKEXE_VIA_CC) +$(SAK): runtime/sak.c runtime/caml/misc.h runtime/caml/config.h + $(V_MKEXE)$(call SAK_BUILD,$@,$<) -$(SAK): runtime/sak.$(O) - $(V_MKEXE)$(call SAK_LINK,$@,$^) - -runtime/sak.$(O): runtime/sak.c runtime/caml/misc.h runtime/caml/config.h - $(V_CC)$(SAK_CC) $(SAK_CFLAGS) $(OUTPUTOBJ)$@ -c $< - -C_LITERAL = $(shell $(SAK) encode-C-literal '$(1)') +C_LITERAL = $(shell $(SAK) $(ENCODE_C_LITERAL) '$(1)') runtime/build_config.h: $(ROOTDIR)/Makefile.config $(SAK) - $(V_GEN)echo '/* This file is generated from $(ROOTDIR)/Makefile.config */' > $@ && \ - echo '#define OCAML_STDLIB_DIR $(call C_LITERAL,$(LIBDIR))' >> $@ && \ - echo '#define HOST "$(HOST)"' >> $@ + $(V_GEN){ \ + echo '/* This file is generated from $(ROOTDIR)/Makefile.config */'; \ + printf '#define OCAML_STDLIB_DIR %s\n' \ + '$(call C_LITERAL,$(TARGET_LIBDIR))'; \ + echo '#define HOST "$(HOST)"'; \ + } > $@ ## Runtime libraries and programs @@ -1922,7 +1917,10 @@ ocamltest_ocaml_PLUGIN = \ ocaml_compilers.mli ocaml_compilers.ml \ ocaml_toplevels.mli ocaml_toplevels.ml \ ocaml_actions.mli ocaml_actions.ml \ - ocaml_tests.mli ocaml_tests.ml + ocaml_tests.mli ocaml_tests.ml \ + debugger_flags.mli debugger_flags.ml \ + debugger_variables.mli debugger_variables.ml \ + debugger_actions.mli debugger_actions.ml \ ocamltest_SOURCES = $(addprefix ocamltest/, \ $(ocamltest_CORE) $(ocamltest_ocaml_PLUGIN) \ @@ -2049,6 +2047,8 @@ manpages: $(MAKE) -C api_docgen man partialclean:: + rm -f ocamldoc/ocamldoc ocamldoc/ocamldoc.exe + rm -f ocamldoc/ocamldoc.opt ocamldoc/ocamldoc.opt.exe rm -f ocamldoc/\#*\# rm -f ocamldoc/*.cm[aiotx] ocamldoc/*.cmxa ocamldoc/*.cmti \ ocamldoc/*.a ocamldoc/*.lib ocamldoc/*.o ocamldoc/*.obj @@ -2802,8 +2802,7 @@ ifeq "$(INSTALL_BYTECODE_PROGRAMS)" "true" flexlink.byte$(EXE) "$(INSTALL_BINDIR)" endif # ifeq "$(INSTALL_BYTECODE_PROGRAMS)" "true" $(MKDIR) "$(INSTALL_FLEXDLLDIR)" - $(INSTALL_DATA) $(addprefix $(BYTE_BINDIR)/, $(FLEXDLL_OBJECTS)) \ - "$(INSTALL_FLEXDLLDIR)" + $(INSTALL_DATA) $(FLEXDLL_OBJECTS) "$(INSTALL_FLEXDLLDIR)" endif # ifeq "$(BOOTSTRAPPING_FLEXDLL)" "true" $(INSTALL_DATA) Makefile.config "$(INSTALL_LIBDIR)" $(INSTALL_DATA) $(DOC_FILES) "$(INSTALL_DOCDIR)" @@ -2968,6 +2967,11 @@ endif include .depend +# Include the cross-compiler recipes only when relevant +ifneq "$(HOST)" "$(TARGET)" +include Makefile.cross +endif + Makefile.config Makefile.build_config: config.status config.status: @echo "Please refer to the installation instructions:" diff --git a/Makefile.build_config.in b/Makefile.build_config.in index ae649dce..3d48c38c 100644 --- a/Makefile.build_config.in +++ b/Makefile.build_config.in @@ -99,6 +99,14 @@ OC_DLL_LDFLAGS=@oc_dll_ldflags@ MKEXE_VIA_CC=$(CC) @mkexe_via_cc_ldflags@ @mkexe_via_cc_extra_cmd@ +# How to build sak +SAK_BUILD=@SAK_BUILD@ +# How to invoke sak +SAK=@SAK@ + +# sak command to encode C literals +ENCODE_C_LITERAL=@encode_C_literal@ + # Which tool to use to display differences between files DIFF=@DIFF@ # Which flags to pass to the diff tool @@ -128,6 +136,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ datarootdir = @datarootdir@ DOCDIR=@docdir@ +### Where to look for the standard library on target +TARGET_LIBDIR=@TARGET_LIBDIR@ + unix_directory = @unix_directory@ unix_library = @unix_library@ @@ -166,6 +177,8 @@ OC_NATIVE_COMPFLAGS = @oc_native_compflags@ OC_NATIVE_LINKFLAGS = -g +BUILD_TRIPLET = @build@ + # Platform-dependent command to create symbolic links LN = @ln@ diff --git a/Makefile.common b/Makefile.common index 1e6a7eff..2680f5d3 100644 --- a/Makefile.common +++ b/Makefile.common @@ -141,9 +141,29 @@ ifeq "$(BOOTSTRAPPING_FLEXDLL)" "true" ifeq "$(filter $(REAL_ROOT_DIR)/$(BYTE_BINDIR), $(subst :, ,$(PATH)))" "" export PATH := \ $(REAL_ROOT_DIR)/$(OPT_BINDIR):$(REAL_ROOT_DIR)/$(BYTE_BINDIR):$(PATH) + # $(BUILD_COMPANY_SYSTEM) is the last two parts of $(BUILD_TRIPLET) + BUILD_TRIPLET_FIELDS := $(subst -,$(SPACE),$(BUILD_TRIPLET)) + BUILD_COMPANY_SYSTEM := $(subst $(SPACE),-,$\ + $(wordlist 2, $(words $(BUILD_TRIPLET_FIELDS)), $(BUILD_TRIPLET_FIELDS))) + # Use the FLEXDIR environment variable to tell flexlink where the support + # objects are located. Passing this location using -I would defeat the whole + # purpose of the PATH-trick (bootstrapped flexlink is indistinguishable from + # an installed flexlink). flexlink also looks for the objects in the same + # directory as the executable, but this is slightly irritating as it requires + # copying them to both byte/bin/ and opt/bin/ but also doesn't work if + # opt/bin/flexlink.exe is a symlink to flexlink.opt.exe, as flexlink can end + # up looking in the directory for the target of the symlink, rather than the + # symlink itself. +ifeq "" "$(filter pc-msys pc-cygwin%, $(BUILD_COMPANY_SYSTEM))" + export FLEXDIR := $(REAL_ROOT_DIR) +else + export FLEXDIR := $(shell cygpath -w "$(REAL_ROOT_DIR)") endif - undefine REAL_ROOT_DIR + undefine BUILD_TRIPLET_FIELDS + undefine BUILD_COMPANY_SYSTEM endif + undefine REAL_ROOT_DIR +endif # ifeq "$(BOOTSTRAPPING_FLEXDLL)" "true" # List of other libraries ALL_OTHERLIBS = dynlink str systhreads unix runtime_events @@ -223,8 +243,6 @@ OCAMLYACCFLAGS ?= --strict -v %.ml %.mli: %.mly $(V_OCAMLYACC)$(OCAMLYACC) $(OCAMLYACCFLAGS) $< -SAK = $(ROOTDIR)/runtime/sak$(EXE) - # Used with the Microsoft toolchain to merge generated manifest files into # executables if_file_exists = ( test ! -f $(1) || $(2) && rm -f $(1) ) @@ -455,7 +473,7 @@ endef # OCAML_LIBRARY # Installing a bytecode executable, with debug information removed define INSTALL_STRIPPED_BYTE_PROG -$(OCAMLRUN) $(ROOTDIR)/tools/stripdebug $(1) $(1).tmp \ +$(OCAMLRUN) $(ROOTDIR)/tools/stripdebug$(EXE) $(1) $(1).tmp \ && $(INSTALL_PROG) $(1).tmp $(2) \ && rm $(1).tmp endef # INSTALL_STRIPPED_BYTE_PROG @@ -467,3 +485,12 @@ endef # INSTALL_STRIPPED_BYTE_PROG # boot/ as part of coldstart. See read_runtime_launch_info in # bytecomp/bytelink.ml for further details. HEADER_NAME = runtime-launch-info + +ifeq "$(UNIX_OR_WIN32)" "win32" +# Ensure that no command can create Cygwin symbolic links by ensuring that +# symlink(2) will fail if native NTFS symlinks aren't available. +export CYGWIN := $(strip \ + $(filter-out winsymlinks winsymlinks:%, $(CYGWIN)) winsymlinks:nativestrict) +export MSYS := $(strip \ + $(filter-out winsymlinks winsymlinks:%, $(MSYS)) winsymlinks:nativestrict) +endif diff --git a/Makefile.config.in b/Makefile.config.in index e432851c..f6473a49 100644 --- a/Makefile.config.in +++ b/Makefile.config.in @@ -46,7 +46,7 @@ BINDIR=@bindir@ datarootdir=@datarootdir@ -### Where to install the standard library +### Where to install the standard library on host LIBDIR=@libdir@ ### Where to install the stub code for the standard library @@ -166,7 +166,7 @@ BYTECODE_CFLAGS=@bytecode_cflags@ BYTECODE_CPPFLAGS=@bytecode_cppflags@ ZSTD_LIBS=@zstd_libs@ BYTECCLIBS=@zstd_libs@ @cclibs@ -EXE=@exeext@ +EXE=@EXEEXT@ OUTPUTEXE=@outputexe@$(EMPTY) SUPPORTS_SHARED_LIBRARIES=@supports_shared_libraries@ MKSHAREDLIBRPATH=@mksharedlibrpath@ @@ -186,7 +186,7 @@ NATIVECCLIBS=@cclibs@ SYSTHREAD_SUPPORT=@systhread_support@ STRIP=@STRIP@ PACKLD=@PACKLD@$(EMPTY) -CCOMPTYPE=@ccomptype@ +CCOMPTYPE=@ccomp_type@ TOOLCHAIN=@toolchain@ CMXS=@cmxs@ @@ -210,6 +210,7 @@ HOST=@host@ FLAMBDA=@flambda@ WITH_FLAMBDA_INVARIANTS=@flambda_invariants@ WITH_CMM_INVARIANTS=@cmm_invariants@ +WITH_CODEGEN_INVARIANTS=@codegen_invariants@ FORCE_SAFE_STRING=true DEFAULT_SAFE_STRING=true WINDOWS_UNICODE=@windows_unicode@ diff --git a/Makefile.cross b/Makefile.cross new file mode 100644 index 00000000..b0a21c3d --- /dev/null +++ b/Makefile.cross @@ -0,0 +1,115 @@ +#************************************************************************** +#* * +#* OCaml * +#* * +#* Samuel Hym, Tarides * +#* * +#* Copyright 2024 Tarides * +#* * +#* All rights reserved. This file is distributed under the terms of * +#* the GNU Lesser General Public License version 2.1, with the * +#* special exception on linking described in the file LICENSE. * +#* * +#************************************************************************** + +# Recipes to build a cross compiler (_not_ cross-compiling the compiler), aka +# generating code that will run on `target`, assuming that a non-cross OCaml +# compiler (so targetting our build machine) of the same version is available in +# $PATH + +# As the cross compiler will be linked with the _build_ version of +# libcomprmarsh, we cannot rely on the detection of zstd done during `configure` +# (as it would have detected the _target_ version). So we recover the flags to +# link with zstd of the non-cross compiler. +# Note that the shell call is a variable that is used only once, so it doesn't +# have to be lazier. +HOST_ZSTD_LIBS=ZSTD_LIBS=$(shell ocamlopt -config-var compression_c_libraries) + +# The build system adds various include directories which pertain to the current +# tree, including -I runtime, which is necessary for -custom executables. +# ocamltest is always a -custom executable, but some others (ocamldoc; the +# debugger, etc.) are only -custom in specific circumstances. It is therefore +# fiddly to change this in the main build system, so we perform a slightly +# different trick by ensuring that "+" is the first entry in VPATH. This will +# put the host compiler's standard library (and consequently its runtime +# objects) well above the .a files found with -I runtime. For now, this seems +# the least nefarious way of ensuring that the bytecode compiler has the C +# headers in runtime/caml available without breaking builds with an external +# ocamlopt. +VPATH := + $(VPATH) + +CROSS_OVERRIDES=OCAMLRUN=ocamlrun NEW_OCAMLRUN=ocamlrun \ + BOOT_OCAMLLEX=ocamllex OCAMLYACC=ocamlyacc +CROSS_COMPILER_OVERRIDES=$(CROSS_OVERRIDES) CAMLC=ocamlc CAMLOPT=ocamlopt \ + BEST_OCAMLC=ocamlc BEST_OCAMLOPT=ocamlopt BEST_OCAMLLEX=ocamllex +CROSS_COMPILERLIBS_OVERRIDES=$(CROSS_OVERRIDES) CAMLC=ocamlc \ + CAMLOPT="$(ROOTDIR)/ocamlopt.opt$(EXE) $(STDLIBFLAGS)" + +ifeq "$(BOOTSTRAPPING_FLEXDLL)" "true" +# Declare flexlink to be an 'old' file, so that make doesn't try to rebuild it +# with the build rules in `Makefile`; its build is driven by the `cross-flexdll` +# recipe provided here instead +OLDS := -o $(BYTE_BINDIR)/flexlink$(EXE) +else +OLDS := +endif + +# The compiler libs that should be rebuilt for target (they are first built for +# host as part of the .opt compilers) +CROSSCOMPILERLIBS := $(addprefix compilerlibs/,$(addsuffix .cmxa,\ + ocamlcommon ocamlmiddleend ocamlbytecomp ocamloptcomp ocamltoplevel)) + +.PHONY: crossopt +ifeq "$(BOOTSTRAPPING_FLEXDLL)" "true" +crossopt: cross-flexdll + $(MAKE) runtime-all $(OLDS) +else +# In that case, $(OLDS) is empty, we can depend directly on runtime-all +crossopt: runtime-all +endif + $(MAKE) ocamlc $(TOOLS_BYTECODE_TARGETS) expunge$(EXE) \ + $(CROSS_COMPILER_OVERRIDES) $(OLDS) + $(MAKE) library $(CROSS_OVERRIDES) $(OLDS) + $(MAKE) ocamlyacc $(CROSS_OVERRIDES) $(OLDS) + $(MAKE) ocamllex $(CROSS_COMPILER_OVERRIDES) $(OLDS) + $(MAKE) ocaml $(CROSS_COMPILER_OVERRIDES) $(OLDS) + $(MAKE) dynlink-all $(CROSS_OVERRIDES) $(OLDS) + $(MAKE) -C otherlibs all $(CROSS_OVERRIDES) $(OLDS) + $(MAKE) runtimeopt $(OLDS) + $(MAKE) ocamlc.opt ocamlopt.opt $(TOOLS_NATIVE_TARGETS) \ + $(CROSS_COMPILER_OVERRIDES) "$(HOST_ZSTD_LIBS)" $(OLDS) + $(MAKE) libraryopt $(CROSS_OVERRIDES) $(OLDS) + $(MAKE) otherlibrariesopt ocamltoolsopt $(CROSS_OVERRIDES) $(OLDS) + $(MAKE) tools-allopt.opt $(CROSS_COMPILER_OVERRIDES) $(OLDS) + # We now build the compiler libs again, but for target this time + rm -f $(ocamlcommon_NCOBJS) $(ocamlmiddleend_NCOBJS) \ + $(ocamlbytecomp_NCOBJS) $(ocamloptcomp_NCOBJS) \ + $(ocamltoplevel_NCOBJS) $(CROSSCOMPILERLIBS) + $(MAKE) $(CROSSCOMPILERLIBS) $(CROSS_COMPILERLIBS_OVERRIDES) $(OLDS) + +.PHONY: cross-flexdll +cross-flexdll: | $(BYTE_BINDIR) $(OPT_BINDIR) + rm -f $(FLEXDLL_SOURCE_DIR)/flexlink.exe + $(MAKE) -C $(FLEXDLL_SOURCE_DIR) $(FLEXLINK_BUILD_ENV) \ + NATDYNLINK=false LINKFLAGS= flexlink.exe support + $(LN) $(FLEXDLL_SOURCE_DIR)/flexlink.exe flexlink.opt.exe + $(LN) flexlink.opt.exe flexlink.byte.exe + cp flexlink.byte.exe $(BYTE_BINDIR)/flexlink + cd $(BYTE_BINDIR) && $(LN) flexlink flexlink.exe + cp $(addprefix $(FLEXDLL_SOURCE_DIR)/, $(FLEXDLL_OBJECTS)) $(ROOTDIR) + cp flexlink.opt.exe $(OPT_BINDIR)/flexlink + cd $(OPT_BINDIR) && $(LN) flexlink flexlink.exe + +INSTALL_OVERRIDES=build_ocamldoc=false WITH_DEBUGGER= OCAMLRUN=ocamlrun + +.PHONY: installcross +installcross: + # Create dummy files to keep `install` happy + touch \ + $(addprefix toplevel/, \ + $(foreach ext,cmi cmt cmti cmx, native/nat__dummy__.$(ext)) \ + all__dummy__.cmx topstart.o native/tophooks.cmi) + $(LN) `command -v ocamllex` lex/ocamllex.opt$(EXE) + $(LN) `command -v ocamlyacc` yacc/ocamlyacc.opt$(EXE) + # Real installation + $(MAKE) install $(INSTALL_OVERRIDES) diff --git a/Makefile.dev b/Makefile.dev index 1e1eab9a..6c7734b5 100644 --- a/Makefile.dev +++ b/Makefile.dev @@ -21,6 +21,14 @@ SOURCE_FILES=$(shell git ls-files '*.ml' '*.mli' | grep -v boot/menhir/parser) AST_FILES=$(addsuffix .ast,$(SOURCE_FILES)) +# Note: some shells do not support command-lines that contain the full +# list of source files ("too many argument"). We ensure that +# AST_FILES is only passed inside a shell command in explicit targets +# from this Makefile, and not in targets common to other makefiles +# that would be executed unconditionally. We previously had +# a `partialclean::` target performing `clean-all-asts` and that +# resulted in annoying failures for some users, see #13817. + build-all-asts: # Recursive invocation ensures that `git ls-files` is not executed on every # invocation of make @@ -44,5 +52,6 @@ CAMLC_DPARSETREE := \ list-all-asts: @for f in $(AST_FILES); do echo "'$$f'"; done -partialclean:: +.PHONY: clean-all-asts +clean-all-asts: @rm -f $(AST_FILES) diff --git a/README.adoc b/README.adoc index 7e622fcd..d97e2cfe 100644 --- a/README.adoc +++ b/README.adoc @@ -12,7 +12,7 @@ performance degradations on our issue tracker. ==== |===== -| Branch `trunk` | Branch `5.2` | Branch `5.1` | Branch `5.0` | Branch `4.14` +| Branch `trunk` | Branch `5.3` | Branch `5.2` | Branch `5.1` | Branch `4.14` | image:https://github.com/ocaml/ocaml/workflows/Build/badge.svg?branch=trunk["Github CI Build Status (trunk branch)", link="https://github.com/ocaml/ocaml/actions?query=workflow%3ABuild"] @@ -20,6 +20,10 @@ performance degradations on our issue tracker. link="https://github.com/ocaml/ocaml/actions?query=workflow%3AHygiene"] image:https://ci.appveyor.com/api/projects/status/github/ocaml/ocaml?branch=trunk&svg=true["AppVeyor Build Status (trunk branch)", link="https://ci.appveyor.com/project/avsm/ocaml"] +| image:https://github.com/ocaml/ocaml/workflows/Build/badge.svg?branch=5.3["Github CI Build Status (5.3 branch)", + link="https://github.com/ocaml/ocaml/actions?query=workflow%3ABuild"] + image:https://ci.appveyor.com/api/projects/status/github/ocaml/ocaml?branch=5.3&svg=true["AppVeyor Build Status (5.3 branch)", + link="https://ci.appveyor.com/project/avsm/ocaml"] | image:https://github.com/ocaml/ocaml/workflows/Build/badge.svg?branch=5.2["Github CI Build Status (5.2 branch)", link="https://github.com/ocaml/ocaml/actions?query=workflow%3ABuild"] image:https://ci.appveyor.com/api/projects/status/github/ocaml/ocaml?branch=5.2&svg=true["AppVeyor Build Status (5.2 branch)", @@ -28,10 +32,6 @@ performance degradations on our issue tracker. link="https://github.com/ocaml/ocaml/actions?query=workflow%3ABuild"] image:https://ci.appveyor.com/api/projects/status/github/ocaml/ocaml?branch=5.1&svg=true["AppVeyor Build Status (5.1 branch)", link="https://ci.appveyor.com/project/avsm/ocaml"] -| image:https://github.com/ocaml/ocaml/workflows/Build/badge.svg?branch=5.0["Github CI Build Status (5.0 branch)", - link="https://github.com/ocaml/ocaml/actions?query=workflow%3ABuild"] - image:https://ci.appveyor.com/api/projects/status/github/ocaml/ocaml?branch=5.0&svg=true["AppVeyor Build Status (5.0 branch)", - link="https://ci.appveyor.com/project/avsm/ocaml"] | image:https://github.com/ocaml/ocaml/workflows/Build/badge.svg?branch=4.14["Github CI Build Status (4.14 branch)", link="https://github.com/ocaml/ocaml/actions?query=workflow%3ABuild"] image:https://ci.appveyor.com/api/projects/status/github/ocaml/ocaml?branch=4.14&svg=true["AppVeyor Build Status (4.14 branch)", diff --git a/VERSION b/VERSION index ba316f95..71fa3dd8 100644 --- a/VERSION +++ b/VERSION @@ -1,4 +1,4 @@ -5.3.0 +5.4.0 # Starting with OCaml 4.14, although the version string that appears above is # still correct and this file can thus still be used to figure it out, diff --git a/aclocal.m4 b/aclocal.m4 index 7353e09a..3d9cd79b 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -30,6 +30,7 @@ m4_include([build-aux/lt~obsolete.m4]) # Macros from the autoconf macro archive m4_include([build-aux/ax_check_compile_flag.m4]) m4_include([build-aux/ax_func_which_gethostbyname_r.m4]) +m4_include([build-aux/ax_prog_cc_for_build.m4]) m4_include([build-aux/ax_pthread.m4]) # OCaml version @@ -94,11 +95,12 @@ AC_DEFUN([OCAML_SIGNAL_HANDLERS_SEMANTICS], [ ) ]) +dnl $1: extra CFLAGS AC_DEFUN([OCAML_CC_SUPPORTS_TREE_VECTORIZE], [ AC_MSG_CHECKING( [whether the C compiler supports __attribute__((optimize("tree-vectorize")))]) saved_CFLAGS="$CFLAGS" - CFLAGS="-Werror $CFLAGS" + CFLAGS="$1 $CFLAGS" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[__attribute__((optimize("tree-vectorize"))) void f(void) {}]], @@ -306,7 +308,7 @@ AC_DEFUN([OCAML_TEST_FLEXLINK], [ # flexlink can cope. The reverse test is unnecessary (a Cygwin-compiled # flexlink can read anything). mv conftest.$ac_objext conftest1.$ac_objext - AS_CASE([$4],[*-pc-cygwin], + AS_CASE([$4],[*-*-cygwin], [ln -s conftest1.$ac_objext conftest2.$ac_objext], [cp conftest1.$ac_objext conftest2.$ac_objext]) @@ -369,27 +371,27 @@ AC_DEFUN([OCAML_TEST_WINPTHREADS_PTHREAD_H], [ OCAML_CC_RESTORE_VARIABLES ]) -AC_DEFUN([OCAML_HOST_IS_EXECUTABLE], [ - AC_MSG_CHECKING([whether host executables can be run in the build]) +AC_DEFUN([OCAML_TARGET_IS_EXECUTABLE], [ + AC_MSG_CHECKING([whether target executables can be run in the build]) old_cross_compiling="$cross_compiling" cross_compiling='no' AC_RUN_IFELSE( [AC_LANG_PROGRAM], [AC_MSG_RESULT([yes]) - host_runnable=true], + target_runnable=true], [AC_MSG_RESULT([no]) - host_runnable=false], + target_runnable=false], # autoconf displays a warning if this parameter is missing, but # cross-compilation mode was disabled above. [assert=false]) cross_compiling="$old_cross_compiling" ]) -# This is AC_RUN_IFELSE but taking $host_runnable into account (i.e. if the +# This is AC_RUN_IFELSE but taking $target_runnable into account (i.e. if the # program can be run, then it is run) AC_DEFUN([OCAML_RUN_IFELSE], [ old_cross_compiling="$cross_compiling" - AS_IF([test "x$host_runnable" = 'xtrue'], [cross_compiling='no']) + AS_IF([test "x$target_runnable" = 'xtrue'], [cross_compiling='no']) AC_RUN_IFELSE([$1],[$2],[$3],[$4]) cross_compiling="$old_cross_compiling" ]) @@ -457,7 +459,7 @@ AC_DEFUN([OCAML_C99_CHECK_FMA], [ AS_CASE([$enable_imprecise_c99_float_ops,$target], [no,*], [hard_error=true], [yes,*], [hard_error=false], - [*,x86_64-w64-mingw32*|*,x86_64-*-cygwin*], [hard_error=false], + [*,x86_64-w64-mingw32*|*,x86_64-*-cygwin], [hard_error=false], [hard_error=true]) AS_IF([test x"$hard_error" = "xtrue"], [AC_MSG_ERROR(m4_normalize([ @@ -466,7 +468,7 @@ AC_DEFUN([OCAML_C99_CHECK_FMA], [ [AC_MSG_WARN(m4_normalize([ fma does not work; emulation enabled]))])], [AS_CASE([$target], - [x86_64-w64-mingw32*|x86_64-*-cygwin*], + [x86_64-w64-mingw32*|x86_64-*-cygwin], [AC_MSG_RESULT([cross-compiling; assume not])], [AC_MSG_RESULT([cross-compiling; assume yes]) AC_DEFINE([HAS_WORKING_FMA], [1])])]) @@ -525,6 +527,78 @@ AC_DEFUN([OCAML_CC_SUPPORTS_ATOMIC], [ OCAML_CC_RESTORE_VARIABLES ]) +# Detects whether the C compiler generates an explicit .note.GNU-stack section +# to mark the stack as non-executable, so that we can follow suit +AC_DEFUN([OCAML_WITH_NONEXECSTACK_NOTE], + [AC_REQUIRE([AC_PROG_FGREP])dnl + AC_CACHE_CHECK([if $CC generates a .note.GNU-stack section], + [ocaml_cv_prog_cc_nonexecstack_note], + [OCAML_CC_SAVE_VARIABLES + + # We write the assembly into the .$ac_objext file as AC_COMPILE_IFELSE + # assumes an error if such a file doesn't exist after compiling + CFLAGS="$CFLAGS -S -o conftest.$ac_objext" + + ocaml_cv_prog_cc_nonexecstack_note=no + AC_COMPILE_IFELSE([AC_LANG_SOURCE], + [AS_IF([$FGREP .note.GNU-stack conftest.$ac_objext >/dev/null], + [ocaml_cv_prog_cc_nonexecstack_note=yes])]) + OCAML_CC_RESTORE_VARIABLES]) + + AS_IF([test "x$ocaml_cv_prog_cc_nonexecstack_note" = xyes], + [with_nonexecstack_note=true + AC_DEFINE([WITH_NONEXECSTACK_NOTE], [1])], + [with_nonexecstack_note=false]) +]) + +AC_DEFUN([OCAML_ASM_SIZE_TYPE_DIRECTIVES], + [AC_REQUIRE([AC_PROG_GREP])dnl + AC_CACHE_CHECK([if $CC generates .size and .type asm directives], + [ocaml_cv_prog_cc_asm_size_type_directives], + [OCAML_CC_SAVE_VARIABLES + + # We write the assembly into the .$ac_objext file as AC_COMPILE_IFELSE + # assumes an error if such a file doesn't exist after compiling + CFLAGS="$CFLAGS -S -o conftest.$ac_objext" + + ocaml_cv_prog_cc_asm_size_type_directives=no + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ +int feat_detect_obj; +int feat_detect_func(void) { + return 42; +} + ]])], + [asm_type_obj_directive=no + asm_type_func_directive=no + asm_size_func_directive=no + # We do not look for a .size directive for the object as it is not + # generated in that simple case for instance by the compiler + # powerpc64le-linux-gnu-gcc 14.2 which emits instead an .lcomm directive + AS_IF([$GREP '\.type.*feat_detect_obj' conftest.$ac_objext >/dev/null], + [asm_type_obj_directive=yes]) + AS_IF([$GREP '\.type.*feat_detect_func' conftest.$ac_objext >/dev/null], + [asm_type_func_directive=yes]) + AS_IF([$GREP '\.size.*feat_detect_func' conftest.$ac_objext >/dev/null], + [asm_size_func_directive=yes]) + AS_CASE([m4_join([,],[$asm_type_obj_directive],[$asm_type_func_directive], + [$asm_size_func_directive])], + [yes,yes,yes], + [ocaml_cv_prog_cc_asm_size_type_directives=yes], + [no,no,no], + [ocaml_cv_prog_cc_asm_size_type_directives=no], + [ocaml_cv_prog_cc_asm_size_type_directives=unconclusive])]) + OCAML_CC_RESTORE_VARIABLES]) + + AS_CASE([$ocaml_cv_prog_cc_asm_size_type_directives], + [yes], + [asm_size_type_directives=true + AC_DEFINE([ASM_SIZE_TYPE_DIRECTIVES], [1])], + [no], + [asm_size_type_directives=false], + [AC_MSG_WARN([found inconsistent results for .size and .type directives]) + asm_size_type_directives=false]) +]) + AC_DEFUN([OCAML_CC_SUPPORTS_LABELS_AS_VALUES], [ AC_CACHE_CHECK([whether $CC supports the labels as values extension], [ocaml_cv_prog_cc_labels_as_values], @@ -543,3 +617,27 @@ AC_DEFUN([OCAML_CC_SUPPORTS_LABELS_AS_VALUES], [ [Define if the C compiler supports the labels as values extension.]) fi ]) + +AC_DEFUN([OCAML_CHECK_LN_ON_WINDOWS], [ + AC_MSG_CHECKING([for a workable solution for ln -sf]) + AS_IF([m4_normalize(MSYS=winsymlinks:nativestrict + CYGWIN=winsymlinks:nativestrict + ln -sf configure conftestLink 2>/dev/null)], + [ln='ln -sf'], + [ln='cp -pf'] + ) + AC_MSG_RESULT([$ln]) +]) + +AC_DEFUN([OCAML_CHECK_WINDOWS_TRIPLET], [ + AS_CASE([$1], + [i686-*-cygwin|x86_64-*-cygwin],[], + [*-*-cygwin*], + [AC_MSG_ERROR([unknown Cygwin variant])], + [i686-w64-mingw32*|x86_64-w64-mingw32*],[], + [*-*-mingw*], + [AC_MSG_ERROR([unknown mingw-w64 variant])], + [i686-pc-windows|x86_64-pc-windows],[], + [*-pc-windows*], + [AC_MSG_ERROR([unknown MSVC variant])]) +]) diff --git a/api_docgen/Ocaml_operators.mld b/api_docgen/Ocaml_operators.mld index a7a35e6d..5a034d7e 100644 --- a/api_docgen/Ocaml_operators.mld +++ b/api_docgen/Ocaml_operators.mld @@ -9,27 +9,42 @@ are also listed as references. % Note: the tables below should be kept in sync with the one in % manual/src/refman/expr.etex . % -\begin{tabular}{cc} +\begin{tabular}{|l|c|} \hline Operator class & Associativity \\ \hline -$!\ldots$ $\tilde{}\ldots$ & -- \\ -$.\cdots()$ $.\cdots[]$ $.\cdots$\textbraceleft\textbraceright& -- \\ -\#\ldots & left \\ +\verb"!"\ldots\quad \verb"~"\ldots\quad & -- \\ +\verb"."$\cdots$\verb"()"\quad + \verb"."$\cdots$\verb"[]"\quad + \verb"."$\cdots$\verb"{}" & -- \\ +\verb"#"\ldots & left \\ function application & left \\ -- -. & -- \\ -$**\ldots$ lsl lsr asr & right \\ -$*\ldots$ /\ldots \%\ldots mod land lor lxor & left \\ -+\ldots -\ldots & left \\ -:: & right \\ -@\ldots \textasciicircum\ldots & right \\ -=\ldots <\ldots >\ldots |\ldots \&\ldots \$\ldots != & left \\ -\& \&\& & right \\ -or || & right \\ -, & -- \\ -<- := & right \\ -if & -- \\ -; & right \\ +\verb"-"\quad \verb"-." \quad (prefix) & -- \\ +\verb"**"\ldots\quad + \verb"lsl"\quad \verb"lsr"\quad \verb"asr" & right \\ +\verb"*"\ldots\quad + \verb"/"\ldots\quad + \verb"%"\ldots\quad + \verb"mod"\quad + \verb"land"\quad + \verb"lor"\quad + \verb"lxor" & left \\ +\verb"+"\ldots\quad \verb"-"\ldots & left \\ +\verb"::" & right \\ +\verb"@"\ldots\quad \verb"^"\ldots & right \\ +\verb"="\ldots\quad + \verb"<"\ldots\quad + \verb">"\ldots\quad + \verb"|"\ldots\quad + \verb"&"\ldots\quad + \verb"$"\ldots\quad + \verb"!="\ldots & left \\ +\verb"&"\quad \verb"&&" & right \\ +\verb"or"\quad \verb"||" & right \\ +\verb"," & -- \\ +\verb"<-"\quad \verb":=" & right \\ +\verb"if" & -- \\ +\verb";" & right \\ \hline \end{tabular} %} diff --git a/api_docgen/ocamldoc/Makefile b/api_docgen/ocamldoc/Makefile index 5b1f8946..058f88c2 100644 --- a/api_docgen/ocamldoc/Makefile +++ b/api_docgen/ocamldoc/Makefile @@ -89,6 +89,7 @@ build/latex/Stdlib.tex: $(ALL_COMPILED_DOC) | build/latex $(V_OCAMLDOC)$(OCAMLDOC_RUN) -latex -o build/latex/all.tex \ -hide Stdlib -lib Stdlib $(DOC_ALL_INCLUDES) \ -sepfiles \ + -latex-escape-underscore "false" \ -latextitle "1,subsection*" \ -latextitle "2,subsubsection*" \ -latex-type-prefix "TYP" \ diff --git a/asmcomp/afl_instrument.ml b/asmcomp/afl_instrument.ml index 6d23311c..a2ed4191 100644 --- a/asmcomp/afl_instrument.ml +++ b/asmcomp/afl_instrument.ml @@ -98,7 +98,7 @@ and instrument = function (* these are base cases and have no logging *) | Cconst_int _ | Cconst_natint _ | Cconst_float _ | Cconst_symbol _ | Creturn_addr - | Cvar _ as c -> c + | Cvar _ | Cvar_mut _ as c -> c let instrument_function c dbg = with_afl_logging c dbg diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp index 23f5b452..f57f3db6 100644 --- a/asmcomp/amd64/emit.mlp +++ b/asmcomp/amd64/emit.mlp @@ -550,7 +550,7 @@ let emit_instr env fallthrough i = cfi_def_cfa_register "rbx"; (* NB: gdb has asserts on contiguous stacks that mean it will not unwind through this unless we were to tag this - calling frame with cfi_signal_frame in it's definition. *) + calling frame with cfi_signal_frame in its definition. *) I.mov (domain_field Domainstate.Domain_c_stack) rsp; emit_call func; @@ -568,7 +568,7 @@ let emit_instr env fallthrough i = | Lop(Iload { memory_chunk; addressing_mode; _ }) -> let dest = res i 0 in begin match memory_chunk with - | Word_int | Word_val -> + | Word_int | Word_val | Sixtyfour -> I.mov (addressing addressing_mode QWORD i 0) dest | Byte_unsigned -> I.movzx (addressing addressing_mode BYTE i 0) dest @@ -583,13 +583,14 @@ let emit_instr env fallthrough i = | Thirtytwo_signed -> I.movsxd (addressing addressing_mode DWORD i 0) dest | Single -> + I.xorpd dest dest; (* avoid partial register stall *) I.cvtss2sd (addressing addressing_mode REAL4 i 0) dest | Double -> I.movsd (addressing addressing_mode REAL8 i 0) dest end | Lop(Istore(chunk, addr, _)) -> begin match chunk with - | Word_int | Word_val -> + | Word_int | Word_val | Sixtyfour -> I.mov (arg i 0) (addressing addr QWORD i 1) | Byte_unsigned | Byte_signed -> I.mov (arg8 i 0) (addressing addr BYTE i 1) @@ -703,6 +704,7 @@ let emit_instr env fallthrough i = | Lop(Iaddf | Isubf | Imulf | Idivf as floatop) -> instr_for_floatop floatop (arg i 1) (res i 0) | Lop(Ifloatofint) -> + I.xorpd (res i 0) (res i 0); (* avoid partial register stall *) I.cvtsi2sd (arg i 0) (res i 0) | Lop(Iintoffloat) -> I.cvttsd2si (arg i 0) (res i 0) @@ -941,14 +943,12 @@ let fundecl fundecl = end; end; cfi_endproc (); - begin match system with - | S_gnu | S_linux -> + if Config.asm_size_type_directives then begin D.type_ (emit_symbol fundecl.fun_name) "@function"; D.size (emit_symbol fundecl.fun_name) (ConstSub ( ConstThis, ConstLabel (emit_symbol fundecl.fun_name))) - | _ -> () end (* Emission of data *) @@ -1078,12 +1078,13 @@ let end_assembly() = efa_string = (fun s -> D.bytes (s ^ "\000")) }; - if system = S_linux || system = S_freebsd || system = S_netbsd || system = S_openbsd then begin + if Config.asm_size_type_directives then begin let frametable = emit_symbol (Compilenv.make_symbol (Some "frametable")) in + D.type_ frametable "@object"; D.size frametable (ConstSub (ConstThis, ConstLabel frametable)) end; - if system = S_linux || system = S_freebsd then + if Config.with_nonexecstack_note then (* Mark stack as non-executable, PR#4564 *) D.section [".note.GNU-stack"] (Some "") [ "%progbits" ]; diff --git a/asmcomp/arm64/arch.ml b/asmcomp/arm64/arch.ml index 8ffc9030..731e9a4c 100644 --- a/asmcomp/arm64/arch.ml +++ b/asmcomp/arm64/arch.ml @@ -74,7 +74,7 @@ let size_addr = 8 let size_int = 8 let size_float = 8 -let allow_unaligned_access = false +let allow_unaligned_access = true (* Behavior of division *) diff --git a/asmcomp/arm64/emit.mlp b/asmcomp/arm64/emit.mlp index f59a5aed..c8213106 100644 --- a/asmcomp/arm64/emit.mlp +++ b/asmcomp/arm64/emit.mlp @@ -45,23 +45,11 @@ let label_prefix = let emit_label lbl = emit_string label_prefix; emit_int lbl -(* Symbols *) - -let emit_symbol s = - if macosx then emit_string "_"; - Emitaux.emit_symbol s - (* Object types *) -let emit_symbol_type emit_lbl_or_sym lbl_or_sym ty = - if not macosx then begin - ` .type {emit_lbl_or_sym lbl_or_sym}, %{emit_string ty}\n` - end - - -let emit_symbol_size sym = - if not macosx then begin - ` .size {emit_symbol sym}, .-{emit_symbol sym}\n` +let emit_label_type lbl ty = + if Config.asm_size_type_directives then begin + ` .type {emit_label lbl}, {emit_string ty}\n` end (* Output a pseudo-register *) @@ -82,10 +70,14 @@ let emit_wreg = function {loc = Reg r} -> emit_string int_reg_name_w.(r) | _ -> fatal_error "Emit.emit_wreg" +let fp = Config.with_frame_pointers + let initial_stack_offset f = - 8 * f.fun_num_stack_slots.(0) + - 8 * f.fun_num_stack_slots.(1) + - (if f.fun_frame_required then 8 else 0) + 8 * f.fun_num_stack_slots.(0) + (* Local int variables *) + 8 * f.fun_num_stack_slots.(1) + (* Local float variables *) + (if f.fun_frame_required then + 8 + (if fp then 8 else 0) (* Return address plus optional Frame Pointer *) + else 0) let frame_size env = let sz = @@ -98,10 +90,9 @@ let slot_offset env loc cl = assert (n >= 0); frame_size env + n | Local n -> - env.stack_offset + - (if cl = 0 - then n * 8 - else env.f.fun_num_stack_slots.(0) * 8 + n * 8) + if cl = 0 + then env.stack_offset + n * 8 + else env.stack_offset + (env.f.fun_num_stack_slots.(0) + n) * 8 | Outgoing n -> assert (n >= 0); n @@ -271,13 +262,16 @@ let emit_stack_adjustment n = (* Deallocate the stack frame and reload the return address before a return or tail call *) - let output_epilogue env f = let n = frame_size env in - if env.f.fun_frame_required then - ` ldr x30, [sp, #{emit_int (n-8)}]\n`; if n > 0 then emit_stack_adjustment n; + if env.f.fun_frame_required then + if fp then ( + ` ldp x29, x30, [sp, #-16]\n`; + ) else ( + ` ldr x30, [sp, #-8]\n`; + ); f(); (* reset CFA back because function body may continue *) if n > 0 then cfi_adjust_cfa_offset n @@ -293,7 +287,7 @@ let rec emit_addimm rd rs n = let nl = n land 0xFFF and nh = n land 0xFFF_000 in ` add {emit_reg rd}, {emit_reg rs}, #{emit_int nh}\n`; if nl <> 0 then - ` add {emit_reg rd}, {emit_reg rd}, #{emit_int nl}\n` + ` add {emit_reg rd}, {emit_reg rd}, #{emit_int nl}\n` end and emit_subimm rd rs n = @@ -401,7 +395,7 @@ let max_out_of_line_code_offset ~num_call_gc ~num_check_bound = max_offset end -module BR = Branch_relaxation.Make (struct +module Size = struct (* CR-someday mshinwell: B and BL have +/- 128Mb ranges; for the moment we assume we will never exceed this. It would seem to be most likely to occur for branches between functions; in this case, the linker should be @@ -443,12 +437,27 @@ module BR = Branch_relaxation.Make (struct let offset_pc_at_branch = 0 + let addsub_size n = + let m = abs n in + assert (m < 0x1_000_000); + let ml = m land 0xFFF and mh = m land 0xFFF_000 in + max 1 ((if mh <> 0 then 1 else 0) + + (if ml <> 0 then 1 else 0)) + + let stack_adj_size n = + (* see emit_stack_adjustment *) + addsub_size n + let prologue_size f = - (if initial_stack_offset f > 0 then 2 else 0) - + (if f.fun_frame_required then 1 else 0) + let stk = initial_stack_offset f in + (if stk > 0 then stack_adj_size (-stk) else 0) + + (if f.fun_frame_required then (if fp then 2 else 1) else 0) let epilogue_size f = - if f.fun_frame_required then 3 else 2 + let stk = initial_stack_offset f in + (if stk > 0 then stack_adj_size stk else 0) + + (if f.fun_frame_required then 1 else 0) + + 1 let instr_size f = function | Lend -> 0 @@ -456,7 +465,8 @@ module BR = Branch_relaxation.Make (struct | Lop (Imove | Ispill | Ireload) -> 1 | Lop (Iconst_int n) -> num_instructions_for_intconst n - | Lop (Iconst_float _) -> 2 + | Lop (Iconst_float f) -> + if f = 0L || is_immediate_float f then 1 else 2 | Lop (Iconst_symbol _) -> 2 | Lop (Icall_ind) -> 1 | Lop (Icall_imm _) -> 1 @@ -466,30 +476,37 @@ module BR = Branch_relaxation.Make (struct | Lop (Iextcall {alloc; stack_ofs} ) -> if stack_ofs > 0 then 5 else if alloc then 3 - else 7 - | Lop (Istackoffset _) -> 2 + else 5 + | Lop (Istackoffset n) -> stack_adj_size (-n) | Lop (Iload { memory_chunk; addressing_mode; is_atomic }) -> let based = match addressing_mode with Iindexed _ -> 0 | Ibased _ -> 1 and barrier = if is_atomic then 1 else 0 and single = match memory_chunk with Single -> 2 | _ -> 1 in based + barrier + single | Lop (Istore (memory_chunk, addressing_mode, assignment)) -> - let based = match addressing_mode with Iindexed _ -> 0 | Ibased _ -> 1 - and barrier = - match memory_chunk, assignment with - | (Word_int | Word_val), true -> 1 + let based = + match addressing_mode with + | Iindexed _ -> 0 + | Ibased _ -> 1 + and pre_store = + match memory_chunk, assignment, macosx, addressing_mode with + | (Word_int | Word_val), true, true, Iindexed 0 -> 0 + | (Word_int | Word_val), true, true, _ -> 1 (* Compute dest address *) + | (Word_int | Word_val), true, false, _ -> 1 (* Barrier instruction *) | _ -> 0 - and single = match memory_chunk with Single -> 2 | _ -> 1 in - based + barrier + single + and store = match memory_chunk with Single -> 2 | _ -> 1 in + based + pre_store + store | Lop (Ialloc _) when f.fun_fast -> 5 | Lop (Ispecific (Ialloc_far _)) when f.fun_fast -> 6 - | Lop (Ipoll _) -> 3 - | Lop (Ispecific (Ipoll_far _)) -> 4 + | Lop (Ipoll {return_label=None}) -> 3 + | Lop (Ipoll {return_label=Some _}) -> 4 + | Lop (Ispecific (Ipoll_far {return_label=None})) -> 4 + | Lop (Ispecific (Ipoll_far {return_label=Some _})) -> 5 | Lop (Ialloc { bytes = num_bytes; _ }) | Lop (Ispecific (Ialloc_far { bytes = num_bytes; _ })) -> begin match num_bytes with - | 16 | 24 | 32 -> 1 - | _ -> 1 + num_instructions_for_intconst (Nativeint.of_int num_bytes) + | 16 | 24 | 32 -> 2 + | _ -> 2 + num_instructions_for_intconst (Nativeint.of_int num_bytes) end | Lop (Iintop (Icomp _)) -> 2 | Lop (Icompf _) -> 2 @@ -502,6 +519,7 @@ module BR = Branch_relaxation.Make (struct | Lop (Ispecific (Ishiftcheckbound_far _)) -> 3 | Lop (Iintop Imod) -> 2 | Lop (Iintop Imulh) -> 1 + | Lop (Iintop_imm ((Iadd|Isub), n)) -> addsub_size n | Lop (Iintop _) -> 1 | Lop (Iintop_imm _) -> 1 | Lop (Ifloatofint | Iintoffloat | Iabsf | Inegf | Ispecific Isqrtf) -> 1 @@ -535,7 +553,7 @@ module BR = Branch_relaxation.Make (struct + begin match lbl1 with None -> 0 | Some _ -> 1 end + begin match lbl2 with None -> 0 | Some _ -> 1 end | Lswitch jumptbl -> 3 + Array.length jumptbl - | Lentertrap -> 0 + | Lentertrap -> if fp then 1 else 0 | Ladjust_trap_depth _ -> 0 | Lpushtrap _ -> 3 | Lpoptrap -> 1 @@ -562,7 +580,8 @@ module BR = Branch_relaxation.Make (struct | Ishiftcheckbound { shift; } -> Lop (Ispecific (Ishiftcheckbound_far { shift; })) | _ -> assert false -end) +end +module BR = Branch_relaxation.Make (Size) (* Output the assembly code for allocation. *) @@ -667,19 +686,42 @@ let name_for_float_comparison = function | CFge -> "ge" | CFnge -> "lt" -(* Output the assembly code for an instruction *) +(* Output a release store [stlr] of register [src] at address [base + addr]. + Since [stlr] does not support addressing modes, we compute [base + addr] + explicitly. *) +let emit_stlr src base addr = + assert macosx; + let dest_reg = + match addr with + | Iindexed 0 -> base + | Iindexed ofs -> + ` add {emit_reg reg_tmp1}, {emit_reg base}, #{emit_int ofs}\n`; + reg_tmp1 + | Ibased _ -> assert false (* Ibased is not emitted under macOS *) + in + ` stlr {emit_reg src}, [{emit_reg dest_reg}]\n` +(* Output the assembly code for an instruction *) let emit_instr env i = emit_debug_info i.dbg; match i.desc with | Lend -> () | Lprologue -> let n = frame_size env in - if n > 0 then - emit_stack_adjustment (-n); if env.f.fun_frame_required then begin - cfi_offset ~reg:30 (* return address *) ~offset:(-8); - ` str x30, [sp, #{emit_int (n-8)}]\n` + if fp then ( + ` stp x29, x30, [sp, #-16]\n`; + cfi_offset ~reg:29 (* frame pointer *) ~offset:(-16); + cfi_offset ~reg:30 (* return address *) ~offset:(-8) + ) else ( + ` str x30, [sp, #-8]\n`; + cfi_offset ~reg:30 (* return address *) ~offset:(-8) + ); + end; + if n > 0 then begin + emit_stack_adjustment (-n); + if env.f.fun_frame_required && fp then + ` add x29, sp, #{emit_int (n-16)}\n`; end | Lop(Imove | Ispill | Ireload) -> let src = i.arg.(0) and dst = i.res.(0) in @@ -747,18 +789,15 @@ let emit_instr env i = ` bl {emit_symbol "caml_c_call"}\n`; `{record_frame env i.live (Dbg_other i.dbg)}\n` end else begin - (* Push frame pointer (x29) onto stack and restore later. *) - ` str x29, [sp, -16]!\n`; - (* Store OCaml stack in the frame pointer register. *) - ` mov x29, sp\n`; + (* Store OCaml stack in x19 register and restore later. *) + ` mov x19, sp\n`; cfi_remember_state (); - cfi_def_cfa_register ~reg:29; + cfi_def_cfa_register ~reg:19; let offset = Domainstate.(idx_of_field Domain_c_stack) * 8 in ` ldr {emit_reg reg_tmp1}, [{emit_reg reg_domain_state_ptr}, {emit_int offset}]\n`; ` mov sp, {emit_reg reg_tmp1}\n`; ` bl {emit_symbol func}\n`; - ` mov sp, x29\n`; - ` ldr x29, [sp], 16\n`; + ` mov sp, x19\n`; cfi_restore_state () end | Lop(Istackoffset n) -> @@ -791,9 +830,10 @@ let emit_instr env i = | Single -> ` ldr s7, {emit_addressing addressing_mode base}\n`; ` fcvt {emit_reg dst}, s7\n` - | Word_int | Word_val -> + | Sixtyfour | Word_int | Word_val -> if is_atomic then begin assert (addressing_mode = Iindexed 0); + assert (not (memory_chunk = Sixtyfour)); ` dmb ishld\n`; ` ldar {emit_reg dst}, [{emit_reg i.arg.(0)}]\n` end else @@ -803,7 +843,7 @@ let emit_instr env i = end | Lop(Istore(size, addr, assignment)) -> (* NB: assignments other than Word_int and Word_val do not follow the - Multicore OCaml memory model and so do not emit a barrier *) + Multicore OCaml memory model and so do not emit a barrier *) let src = i.arg.(0) in let base = match addr with @@ -822,10 +862,22 @@ let emit_instr env i = | Single -> ` fcvt s7, {emit_reg src}\n`; ` str s7, {emit_addressing addr base}\n`; - | Word_int | Word_val -> - (* memory model barrier for non-initializing store *) - if assignment then ` dmb ishld\n`; + | Sixtyfour -> ` str {emit_reg src}, {emit_addressing addr base}\n` + | Word_int | Word_val -> + begin match assignment, macosx with + | true, true -> + (* Release store for assignments on macOS. See + https://github.com/ocaml/ocaml/issues/13262. *) + emit_stlr src base addr + | true, false -> + (* Memory model barrier for assignments. *) + ` dmb ishld\n`; + ` str {emit_reg src}, {emit_addressing addr base}\n` + | _, _ -> + (* Initializing store *) + ` str {emit_reg src}, {emit_addressing addr base}\n` + end | Double -> ` str {emit_reg src}, {emit_addressing addr base}\n` end @@ -1026,7 +1078,10 @@ let emit_instr env i = done *) | Lentertrap -> - () + if fp then begin + let delta = (frame_size env) - 16 (* return address + frame pointer *) in + ` add x29, sp, #{emit_int delta}\n` + end | Ladjust_trap_depth { delta_traps } -> (* each trap occupies 16 bytes on the stack *) let delta = 16 * delta_traps in @@ -1058,8 +1113,37 @@ let emit_instr env i = (* Emission of an instruction sequence *) -let rec emit_all env i = - if i.desc = Lend then () else (emit_instr env i; emit_all env i.next) +(* for debugging instr_size errors *) +let emit_instr_debug env i = + let lbl = new_label () in + `{emit_label lbl}:\n`; + emit_instr env i; + let sz = Size.instr_size env.f i.desc * 4 in + ` .ifne (. - {emit_label lbl}) - {emit_int sz}\n`; + ` .error \"Emit.instr_size: instruction length mismatch\"\n`; + ` .endif\n` + +let rec emit_all env lbl_start acc i = + let debug = Config.with_codegen_invariants in + match i.desc with + | Lend -> + if debug then begin + (* acc measures in units of 32-bit instructions *) + let sz = acc * 4 in + ` .ifne (. - {emit_label lbl_start}) - {emit_int sz}\n`; + ` .error \"Emit.instr_size: instruction length mismatch\"\n`; + ` .endif\n`; + end + else + () + | _ -> + if debug then emit_instr_debug env i else emit_instr env i; + emit_all env lbl_start (acc + Size.instr_size env.f i.desc) i.next + +let emit_all env i = + let lbl = new_label () in + `{emit_label lbl}:\n`; + emit_all env lbl 0 i (* Emission of a function declaration *) @@ -1068,7 +1152,7 @@ let fundecl fundecl = emit_named_text_section fundecl.fun_name; ` .align 3\n`; ` .globl {emit_symbol fundecl.fun_name}\n`; - emit_symbol_type emit_symbol fundecl.fun_name "function"; + emit_type_directive fundecl.fun_name "%function"; (* Dynamic stack checking *) let stack_threshold_size = Config.stack_threshold * 8 in (* bytes *) let max_frame_size = frame_size env + fundecl.fun_extra_stack_used in @@ -1119,8 +1203,8 @@ let fundecl fundecl = assert (List.length env.bound_error_sites = num_check_bound); cfi_endproc(); - emit_symbol_type emit_symbol fundecl.fun_name "function"; - emit_symbol_size fundecl.fun_name; + emit_type_directive fundecl.fun_name "%function"; + emit_size_directive fundecl.fun_name; emit_literals env (* Emission of data *) @@ -1193,10 +1277,10 @@ let end_assembly () = `{emit_symbol lbl}:\n`; emit_frames { efa_code_label = (fun lbl -> - emit_symbol_type emit_label lbl "function"; + emit_label_type lbl "%function"; ` .quad {emit_label lbl}\n`); efa_data_label = (fun lbl -> - emit_symbol_type emit_label lbl "object"; + emit_label_type lbl "%object"; ` .quad {emit_label lbl}\n`); efa_8 = (fun n -> ` .byte {emit_int n}\n`); efa_16 = (fun n -> ` .short {emit_int n}\n`); @@ -1207,11 +1291,6 @@ let end_assembly () = ` .long {emit_label lbl} - . + {emit_int32 ofs}\n`); efa_def_label = (fun lbl -> `{emit_label lbl}:\n`); efa_string = (fun s -> emit_string_directive " .asciz " s) }; - emit_symbol_type emit_symbol lbl "object"; - emit_symbol_size lbl; - begin match Config.system with - | "linux" -> - (* Mark stack as non-executable *) - ` .section .note.GNU-stack,\"\",%progbits\n` - | _ -> () - end + emit_type_directive lbl "%object"; + emit_size_directive lbl; + emit_nonexecstack_note () diff --git a/asmcomp/arm64/proc.ml b/asmcomp/arm64/proc.ml index 78845f33..1f6a8797 100644 --- a/asmcomp/arm64/proc.ml +++ b/asmcomp/arm64/proc.ml @@ -248,9 +248,9 @@ let stack_ptr_dwarf_register_number = 31 (* Registers destroyed by operations *) let destroyed_at_c_noalloc_call = - (* x19-x28, d8-d15 preserved *) + (* x20-x28, d8-d15 preserved *) Array.of_list (List.map phys_reg - [0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15; + [0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16; 100;101;102;103;104;105;106;107; 116;117;118;119;120;121;122;123; 124;125;126;127;128;129;130;131]) diff --git a/asmcomp/arm64/selection.ml b/asmcomp/arm64/selection.ml index b6ecfd9f..de517258 100644 --- a/asmcomp/arm64/selection.ml +++ b/asmcomp/arm64/selection.ml @@ -32,7 +32,7 @@ let is_offset chunk n = n land 1 = 0 && n lsr 1 < 0x1000 | Thirtytwo_unsigned | Thirtytwo_signed | Single -> n land 3 = 0 && n lsr 2 < 0x1000 - | Word_int | Word_val | Double -> + | Sixtyfour | Word_int | Word_val | Double -> n land 7 = 0 && n lsr 3 < 0x1000) let is_logical_immediate n = diff --git a/asmcomp/cmm.ml b/asmcomp/cmm.ml index d1abd096..f322f33f 100644 --- a/asmcomp/cmm.ml +++ b/asmcomp/cmm.ml @@ -142,6 +142,7 @@ type memory_chunk = | Sixteen_signed | Thirtytwo_unsigned | Thirtytwo_signed + | Sixtyfour | Word_int | Word_val | Single @@ -177,6 +178,7 @@ type expression = | Cconst_float of float * Debuginfo.t | Cconst_symbol of string * Debuginfo.t | Cvar of Backend_var.t + | Cvar_mut of Backend_var.t | Clet of Backend_var.With_provenance.t * expression * expression | Clet_mut of Backend_var.With_provenance.t * machtype * expression * expression @@ -266,6 +268,7 @@ let iter_shallow_tail f = function | Cconst_float _ | Cconst_symbol _ | Cvar _ + | Cvar_mut _ | Cassign _ | Ctuple _ | Cop _ @@ -303,6 +306,7 @@ let rec map_tail f = function | Cconst_float _ | Cconst_symbol _ | Cvar _ + | Cvar_mut _ | Cassign _ | Ctuple _ | Creturn_addr @@ -340,6 +344,7 @@ let map_shallow f = function | Cconst_float _ | Cconst_symbol _ | Cvar _ + | Cvar_mut _ | Creturn_addr as c -> c diff --git a/asmcomp/cmm.mli b/asmcomp/cmm.mli index c64f2c9f..175ad81e 100644 --- a/asmcomp/cmm.mli +++ b/asmcomp/cmm.mli @@ -132,11 +132,12 @@ type memory_chunk = | Sixteen_signed | Thirtytwo_unsigned | Thirtytwo_signed - | Word_int (* integer or pointer outside heap *) - | Word_val (* pointer inside heap or encoded int *) + | Sixtyfour (* 64-bit integer whose accesses do not follow OCaml + relaxed memory model *) + | Word_int (* Integer or pointer outside heap *) + | Word_val (* Pointer inside heap or encoded int *) | Single - | Double (* word-aligned 64-bit float - see PR#10433 *) + | Double (* Word-aligned 64-bit float. See PR#10433. *) and operation = Capply of machtype @@ -178,6 +179,7 @@ and expression = | Cconst_float of float * Debuginfo.t | Cconst_symbol of string * Debuginfo.t | Cvar of Backend_var.t + | Cvar_mut of Backend_var.t | Clet of Backend_var.With_provenance.t * expression * expression | Clet_mut of Backend_var.With_provenance.t * machtype * expression * expression diff --git a/asmcomp/cmm_helpers.ml b/asmcomp/cmm_helpers.ml index c99c39bc..3d614409 100644 --- a/asmcomp/cmm_helpers.ml +++ b/asmcomp/cmm_helpers.ml @@ -32,11 +32,6 @@ let bind_load name arg fn = | Cop(Cload _, [Cvar _], _) -> fn arg | _ -> bind name arg fn -let bind_nonvar name arg fn = - match arg with - Cconst_int _ | Cconst_natint _ | Cconst_symbol _ -> fn arg - | _ -> let id = V.create_local name in Clet(VP.create id, arg, fn (Cvar id)) - let caml_black = Nativeint.shift_left (Nativeint.of_int 3) 8 (* cf. runtime/caml/gc.h *) @@ -106,11 +101,19 @@ let alloc_boxedintnat_header dbg = Cconst_natint (boxedintnat_header, dbg) let max_repr_int = max_int asr 1 let min_repr_int = min_int asr 1 +let tag_const (n : int) : nativeint = + Nativeint.(add (shift_left (of_int n) 1) 1n) + +let untag_const (n : nativeint) : int = + if Nativeint.(logand n 1n <> 1n) then + Misc.fatal_error + "Cmm_helpers.untag_const was called on an non-tagged constant"; + Nativeint.(to_int (shift_right n 1)) + let int_const dbg n = if n <= max_repr_int && n >= min_repr_int then Cconst_int((n lsl 1) + 1, dbg) - else Cconst_natint - (Nativeint.add (Nativeint.shift_left (Nativeint.of_int n) 1) 1n, dbg) + else Cconst_natint (tag_const n, dbg) let natint_const_untagged dbg n = if n > Nativeint.of_int max_int @@ -119,7 +122,7 @@ let natint_const_untagged dbg n = else Cconst_int (Nativeint.to_int n, dbg) let cint_const n = - Cint(Nativeint.add (Nativeint.shift_left (Nativeint.of_int n) 1) 1n) + Cint(tag_const n) let targetint_const n = Targetint.add (Targetint.shift_left (Targetint.of_int n) 1) @@ -641,8 +644,8 @@ let field_address ptr n dbg = then ptr else Cop(Cadda, [ptr; Cconst_int(n * size_addr, dbg)], dbg) -let get_field_gen mutability ptr n dbg = - Cop(Cload {memory_chunk=Word_val; mutability; is_atomic=false}, +let get_field_gen ?(memory_chunk=Word_val) mutability ptr n dbg = + Cop(Cload {memory_chunk; mutability; is_atomic=false}, [field_address ptr n dbg], dbg) let get_field_codepointer mutability ptr n dbg = @@ -741,6 +744,9 @@ let array_indexing ?typ log2size ptr ofs dbg = Cop(add, [Cop(add, [ptr; lsl_const ofs (log2size - 1) dbg], dbg); Cconst_int((-1) lsl (log2size - 1), dbg)], dbg) +let field_address_computed ptr ofs dbg = + array_indexing log2_size_addr ptr ofs dbg + let addr_array_ref arr ofs dbg = Cop(mk_load_mut Word_val, [array_indexing log2_size_addr arr ofs dbg], dbg) @@ -944,9 +950,9 @@ let bigarray_word_kind : Lambda.bigarray_kind -> memory_chunk = function | Pbigarray_sint16 -> Sixteen_signed | Pbigarray_uint16 -> Sixteen_unsigned | Pbigarray_int32 -> Thirtytwo_signed - | Pbigarray_int64 -> Word_int - | Pbigarray_caml_int -> Word_int - | Pbigarray_native_int -> Word_int + | Pbigarray_int64 -> Sixtyfour + | Pbigarray_caml_int -> Sixtyfour + | Pbigarray_native_int -> Sixtyfour | Pbigarray_complex32 -> Single | Pbigarray_complex64 -> Double @@ -1190,7 +1196,7 @@ let unaligned_set_32 ptr idx newval dbg = let unaligned_load_64 ptr idx dbg = if Arch.allow_unaligned_access - then Cop(mk_load_mut Word_int, [add_int ptr idx dbg], dbg) + then Cop(mk_load_mut Sixtyfour, [add_int ptr idx dbg], dbg) else let cconst_int i = Cconst_int (i, dbg) in let v1 = Cop(mk_load_mut Byte_unsigned, [add_int ptr idx dbg], dbg) in @@ -1228,7 +1234,7 @@ let unaligned_load_64 ptr idx dbg = let unaligned_set_64 ptr idx newval dbg = if Arch.allow_unaligned_access - then Cop(Cstore (Word_int, Assignment), [add_int ptr idx dbg; newval], dbg) + then Cop(Cstore (Sixtyfour, Assignment), [add_int ptr idx dbg; newval], dbg) else let cconst_int i = Cconst_int (i, dbg) in let v1 = @@ -1369,13 +1375,93 @@ let simplif_primitive p : Clambda_primitives.primitive = let transl_isout h arg dbg = tag_int (Cop(Ccmpa Clt, [h ; arg], dbg)) dbg +(* Operations on OCaml values *) + +let add_int_caml arg1 arg2 dbg = + decr_int (add_int arg1 arg2 dbg) dbg + +(* Unary primitive delayed to reuse add_int_caml *) +let offsetint n arg dbg = + if Misc.no_overflow_lsl n 1 then + add_const arg (n lsl 1) dbg + else + add_int_caml arg (int_const dbg n) dbg + +let sub_int_caml arg1 arg2 dbg = + incr_int (sub_int arg1 arg2 dbg) dbg + +let mul_int_caml arg1 arg2 dbg = + (* decrementing the non-constant part helps when the multiplication is + followed by an addition; + for example, using this trick compiles (100 * a + 7) into + (+ ( * a 100) -85) + rather than + (+ ( * 200 (>>s a 1)) 15) + *) + match arg1, arg2 with + | Cconst_int _ as c1, c2 -> + incr_int (mul_int (untag_int c1 dbg) (decr_int c2 dbg) dbg) dbg + | c1, c2 -> + incr_int (mul_int (decr_int c1 dbg) (untag_int c2 dbg) dbg) dbg + +let div_int_caml is_safe arg1 arg2 dbg = + tag_int(div_int (untag_int arg1 dbg) + (untag_int arg2 dbg) is_safe dbg) dbg + +let mod_int_caml is_safe arg1 arg2 dbg = + tag_int(mod_int (untag_int arg1 dbg) + (untag_int arg2 dbg) is_safe dbg) dbg + +let and_int_caml arg1 arg2 dbg = + Cop(Cand, [arg1; arg2], dbg) + +let or_int_caml arg1 arg2 dbg = + Cop(Cor, [arg1; arg2], dbg) + +let xor_int_caml arg1 arg2 dbg = + Cop(Cor, [Cop(Cxor, [ignore_low_bit_int arg1; + ignore_low_bit_int arg2], dbg); + Cconst_int (1, dbg)], dbg) + +let lsl_int_caml arg1 arg2 dbg = + incr_int(lsl_int (decr_int arg1 dbg) + (untag_int arg2 dbg) dbg) dbg + +let lsr_int_caml arg1 arg2 dbg = + Cop(Cor, [lsr_int arg1 (untag_int arg2 dbg) dbg; + Cconst_int (1, dbg)], dbg) + +let asr_int_caml arg1 arg2 dbg = + Cop(Cor, [asr_int arg1 (untag_int arg2 dbg) dbg; + Cconst_int (1, dbg)], dbg) + +let int_comp_caml cmp arg1 arg2 dbg = + tag_int(Cop(Ccmpi cmp, + [arg1; arg2], dbg)) dbg + (* Build an actual switch (ie jump table) *) +type switch_arg = Tagged of expression | Untagged of expression + +(** This function takes a switch on immedate values, + for example: + int 0: 1 + int 1: 3 + int 2: 5 + + It tries to perform two optimizations: + - If the switch implements an affine function [x -> a*x + b], + produce the affine expression [a * arg + b]. In particular, when + a=1 and b=0, return the argument [arg] unchanged. + - If the switch only has constant right-hand-sides (but is not an + affine function), produce a table lookup. +*) let make_switch arg cases actions dbg = + (* We only apply those optimizations if the right-hand-side is + made of valid OCaml constants. In particular, if all machine + integers appearing in the right-hand-side are tagged (least bit 1). *) let extract_uconstant = function - (* Constant integers loaded from a table should end in 1, - so that Cload never produces untagged integers *) | Cconst_int (n, _), _dbg when (n land 1) = 1 -> Some (Cint (Nativeint.of_int n)) | Cconst_natint (n, _), _dbg @@ -1390,10 +1476,27 @@ let make_switch arg cases actions dbg = if length >= 2 then begin match const_actions.(cases.(0)), const_actions.(cases.(1)) with - | Cint v0, Cint v1 -> - let slope = Nativeint.sub v1 v0 in + | Cint n0, Cint n1 -> + (* The right-hand-sides are tagged, so we can translate them + back to OCaml integers without loss of information, to + compute the offset and slope on OCaml integers. + + For example, consider the identity function on OCaml integers + 0 -> 0 + 1 -> 1 + 2 -> 2 + If we computed the slope with native integers on the + right-hand-side, we would see + 0 -> 1n + 1 -> 3n + 2 -> 5n + and compute offset=1n, slope=2n. + We want offset=0, slope=1 instead. + *) + let v0, v1 = untag_const n0, untag_const n1 in + let slope = v1 - v0 in let check i = function - | Cint v -> v = Nativeint.(add (mul (of_int i) slope) v0) + | Cint n -> untag_const n = (slope * i + v0) | _ -> false in if Misc.Stdlib.Array.for_alli @@ -1405,29 +1508,42 @@ let make_switch arg cases actions dbg = end else None in - let make_table_lookup ~cases ~const_actions arg dbg = + let make_switch ~arg_untagged ~cases ~actions = + (* We need an untagged argument here. *) + Cswitch (arg_untagged, cases, actions, dbg) + in + let make_table_lookup ~arg_tagged ~cases ~const_actions = + (* We need a tagged argument here, to call a [*_array_ref] helper. *) let table = Compilenv.new_const_symbol () in Cmmgen_state.add_constant table (Const_table (Local, Array.to_list (Array.map (fun act -> const_actions.(act)) cases))); - addr_array_ref (Cconst_symbol (table, dbg)) (tag_int arg dbg) dbg + (* Constant integers loaded from a table are tagged, + so that Cload never produces untagged integers. *) + addr_array_ref (Cconst_symbol (table, dbg)) arg_tagged dbg in - let make_affine_computation ~offset ~slope arg dbg = - (* In case the resulting integers are an affine function of the index, we - don't emit a table, and just compute the result directly *) - add_int - (mul_int arg (natint_const_untagged dbg slope) dbg) - (natint_const_untagged dbg offset) - dbg + let make_affine_computation ~arg_tagged ~offset ~slope = + (* Asking for a tagged argument here does not introduce extra tagging, + as any (tag_int ..) logic around the argument will be undone by + [mul_int_caml]. *) + add_int_caml + (mul_int_caml (int_const dbg slope) arg_tagged dbg) + (int_const dbg offset) dbg + in + let arg_tagged, arg_untagged = + match arg with + | Tagged arg_tagged -> arg_tagged, untag_int arg_tagged dbg + | Untagged arg_untagged -> tag_int arg_untagged dbg, arg_untagged in match Misc.Stdlib.Array.all_somes (Array.map extract_uconstant actions) with | None -> - Cswitch (arg,cases,actions,dbg) + make_switch ~arg_untagged ~cases ~actions | Some const_actions -> match extract_affine ~cases ~const_actions with | Some (offset, slope) -> - make_affine_computation ~offset ~slope arg dbg - | None -> make_table_lookup ~cases ~const_actions arg dbg + make_affine_computation ~arg_tagged ~offset ~slope + | None -> + make_table_lookup ~arg_tagged ~cases ~const_actions module SArgBlocks = struct @@ -1459,7 +1575,7 @@ struct Debuginfo.none) let make_switch dbg arg cases actions = let actions = Array.map (fun expr -> expr, dbg) actions in - make_switch arg cases actions dbg + make_switch (Untagged arg) cases actions dbg let bind arg body = bind "switcher" arg body let make_catch handler = match handler with @@ -1682,7 +1798,8 @@ let cache_public_method meths tag cache dbg = (Clet( VP.create mi, Cop(Cor, - [Cop(Clsr, [Cop(Caddi, [Cvar li; Cvar hi], dbg); cconst_int 1], + [Cop(Clsr, [Cop(Caddi, [Cvar_mut li; Cvar_mut hi], dbg); + cconst_int 1], dbg); cconst_int 1], dbg), @@ -1699,7 +1816,7 @@ let cache_public_method meths tag cache dbg = dbg, Cassign(li, Cvar mi), dbg), Cifthenelse - (Cop(Ccmpi Cge, [Cvar li; Cvar hi], dbg), + (Cop(Ccmpi Cge, [Cvar_mut li; Cvar_mut hi], dbg), dbg, Cexit (raise_num, []), dbg, Ctuple [], dbg)))) @@ -1708,7 +1825,7 @@ let cache_public_method meths tag cache dbg = dbg), Clet ( VP.create tagged, - Cop(Caddi, [lsl_const (Cvar li) log2_size_addr dbg; + Cop(Caddi, [lsl_const (Cvar_mut li) log2_size_addr dbg; cconst_int(1 - 3 * size_addr)], dbg), Csequence(Cop (Cstore (Word_int, Assignment), [cache; Cvar tagged], dbg), Cvar tagged))))) @@ -2153,68 +2270,6 @@ let setfloatfield n init arg1 arg2 dbg = else Cop(Cadda, [arg1; Cconst_int(n * size_float, dbg)], dbg); arg2], dbg)) -let add_int_caml arg1 arg2 dbg = - decr_int (add_int arg1 arg2 dbg) dbg - -(* Unary primitive delayed to reuse add_int_caml *) -let offsetint n arg dbg = - if Misc.no_overflow_lsl n 1 then - add_const arg (n lsl 1) dbg - else - add_int_caml arg (int_const dbg n) dbg - -let sub_int_caml arg1 arg2 dbg = - incr_int (sub_int arg1 arg2 dbg) dbg - -let mul_int_caml arg1 arg2 dbg = - (* decrementing the non-constant part helps when the multiplication is - followed by an addition; - for example, using this trick compiles (100 * a + 7) into - (+ ( * a 100) -85) - rather than - (+ ( * 200 (>>s a 1)) 15) - *) - match arg1, arg2 with - | Cconst_int _ as c1, c2 -> - incr_int (mul_int (untag_int c1 dbg) (decr_int c2 dbg) dbg) dbg - | c1, c2 -> - incr_int (mul_int (decr_int c1 dbg) (untag_int c2 dbg) dbg) dbg - -let div_int_caml is_safe arg1 arg2 dbg = - tag_int(div_int (untag_int arg1 dbg) - (untag_int arg2 dbg) is_safe dbg) dbg - -let mod_int_caml is_safe arg1 arg2 dbg = - tag_int(mod_int (untag_int arg1 dbg) - (untag_int arg2 dbg) is_safe dbg) dbg - -let and_int_caml arg1 arg2 dbg = - Cop(Cand, [arg1; arg2], dbg) - -let or_int_caml arg1 arg2 dbg = - Cop(Cor, [arg1; arg2], dbg) - -let xor_int_caml arg1 arg2 dbg = - Cop(Cor, [Cop(Cxor, [ignore_low_bit_int arg1; - ignore_low_bit_int arg2], dbg); - Cconst_int (1, dbg)], dbg) - -let lsl_int_caml arg1 arg2 dbg = - incr_int(lsl_int (decr_int arg1 dbg) - (untag_int arg2 dbg) dbg) dbg - -let lsr_int_caml arg1 arg2 dbg = - Cop(Cor, [lsr_int arg1 (untag_int arg2 dbg) dbg; - Cconst_int (1, dbg)], dbg) - -let asr_int_caml arg1 arg2 dbg = - Cop(Cor, [asr_int arg1 (untag_int arg2 dbg) dbg; - Cconst_int (1, dbg)], dbg) - -let int_comp_caml cmp arg1 arg2 dbg = - tag_int(Cop(Ccmpi cmp, - [arg1; arg2], dbg)) dbg - let stringref_unsafe arg1 arg2 dbg = tag_int(Cop(mk_load_mut Byte_unsigned, [add_int arg1 (untag_int arg2 dbg) dbg], diff --git a/asmcomp/cmm_helpers.mli b/asmcomp/cmm_helpers.mli index 513b4adf..5c325bd4 100644 --- a/asmcomp/cmm_helpers.mli +++ b/asmcomp/cmm_helpers.mli @@ -24,10 +24,6 @@ val bind : val bind_load : string -> expression -> (expression -> expression) -> expression -(** Same as [bind], but does not treat variables as simple *) -val bind_nonvar : - string -> expression -> (expression -> expression) -> expression - (** Headers *) (** A null header with GC bits set to black *) @@ -203,10 +199,11 @@ val mk_load_atomic : memory_chunk -> operation [n]th field of the block pointed to by [ptr] *) val field_address : expression -> int -> Debuginfo.t -> expression -(** [get_field_gen mut ptr n dbg] returns an expression for the access to the - [n]th field of the block pointed to by [ptr] *) +(** [get_field_gen ?memory_chunk mut ptr n dbg] returns an expression for + the access to the [n]th field of the block pointed to by [ptr]. *) val get_field_gen : - Asttypes.mutable_flag -> expression -> int -> Debuginfo.t -> expression + ?memory_chunk:memory_chunk -> Asttypes.mutable_flag -> expression -> int -> + Debuginfo.t -> expression (** [set_field ptr n newval init dbg] returns an expression for setting the [n]th field of the block pointed to by [ptr] to [newval] *) @@ -214,6 +211,12 @@ val set_field : expression -> int -> expression -> Lambda.initialization_or_assignment -> Debuginfo.t -> expression +(** [field_address_computed ptr ofs dbg] returns an expression for the address + at offset [ofs] (in machine words) of the block pointed to by [ptr]. + The resulting expression is a derived pointer of type [Addr]. *) +val field_address_computed : + expression -> expression -> Debuginfo.t -> expression + (** Load a block's header *) val get_header : expression -> Debuginfo.t -> expression @@ -538,10 +541,12 @@ val bigstring_set : (** [transl_isout h arg dbg] *) val transl_isout : expression -> expression -> Debuginfo.t -> expression +type switch_arg = Tagged of expression | Untagged of expression (** [make_switch arg cases actions dbg] : Generate a Cswitch construct, - or optimize as a static table lookup when possible. *) + or optimize as a static table lookup when possible. +*) val make_switch : - expression -> int array -> (expression * Debuginfo.t) array -> Debuginfo.t -> + switch_arg -> int array -> (expression * Debuginfo.t) array -> Debuginfo.t -> expression (** [transl_int_switch loc arg low high cases default] *) diff --git a/asmcomp/cmm_invariants.ml b/asmcomp/cmm_invariants.ml index 92b605fe..a9ba7a78 100644 --- a/asmcomp/cmm_invariants.ml +++ b/asmcomp/cmm_invariants.ml @@ -14,9 +14,23 @@ [@@@ocaml.warning "-40"] +module V = Backend_var +module VP = Backend_var.With_provenance module Int = Numbers.Int -(* Check a number of continuation-related invariants *) +(* Check a number of invariants around continuation and variable uses *) + +type mutability = Mutable | Immutable + +let equal_mutability m1 m2 = + match m1, m2 with + | Mutable, Mutable | Immutable, Immutable -> true + | Mutable, Immutable | Immutable, Mutable -> false + +let mutability_to_string m = + match m with + | Mutable -> "mutable" + | Immutable -> "immutable" module Env : sig type t @@ -27,10 +41,17 @@ module Env : sig val jump : t -> cont:int -> arg_num:int -> unit + val bind_var : t -> V.t -> mutability -> t + + val bind_params : t -> (VP.t * _) list -> t + + val use_var : t -> V.t -> mutability -> unit + val report : Format.formatter -> bool end = struct type t = { bound_handlers : int Int.Map.t; + bound_variables : mutability V.Map.t; } type error = @@ -38,6 +59,9 @@ end = struct | Multiple_handlers of { cont: int; } | Wrong_arguments_number of { cont: int; handler_args: int; jump_args: int; } + | Unbound_variable of { var : V.t; mut : mutability } + | Wrong_mutability of + { var : V.t; binding_mut : mutability; use_mut : mutability } module Error = struct type t = error @@ -74,13 +98,14 @@ end = struct state.errors <- ErrorSet.empty; { bound_handlers = Int.Map.empty; + bound_variables = V.Map.empty; } let handler t ~cont ~arg_num = if Int.Set.mem cont state.all_handlers then multiple_handler cont; state.all_handlers <- Int.Set.add cont state.all_handlers; let bound_handlers = Int.Map.add cont arg_num t.bound_handlers in - { bound_handlers; } + { t with bound_handlers; } let jump t ~cont ~arg_num = match Int.Map.find cont t.bound_handlers with @@ -89,6 +114,27 @@ end = struct wrong_arguments cont handler_args arg_num | exception Not_found -> unbound_handler cont + let bind_var t var mut = + let bound_variables = V.Map.add var mut t.bound_variables in + { t with bound_variables } + + let bind_params t params = + let bound_variables = + List.fold_left (fun bound_vars (var, _) -> + V.Map.add (VP.var var) Immutable bound_vars) + t.bound_variables params + in + { t with bound_variables } + + let use_var t var use_mut = + match V.Map.find_opt var t.bound_variables with + | Some binding_mut -> + if equal_mutability use_mut binding_mut + then () + else record_error (Wrong_mutability { var; binding_mut; use_mut }) + | None -> + record_error (Unbound_variable { var; mut = use_mut }) + let print_error ppf error = match error with | Unbound_handler { cont } -> @@ -110,6 +156,16 @@ end = struct cont handler_args jump_args + | Unbound_variable { var; mut } -> + Format.fprintf ppf + "Variable %a (%s) was unbound or used outside the scope of its binder" + V.print var (mutability_to_string mut) + | Wrong_mutability { var; binding_mut; use_mut } -> + Format.fprintf ppf + "Variable %a was bound as %s but used as %s" + V.print var + (mutability_to_string binding_mut) + (mutability_to_string use_mut) let print_error_newline ppf error = Format.fprintf ppf "%a@." print_error error @@ -125,15 +181,22 @@ end let rec check env (expr : Cmm.expression) = match expr with | Cconst_int _ | Cconst_natint _ | Cconst_float _ | Cconst_symbol _ - | Cvar _ | Creturn_addr -> + | Creturn_addr -> () - | Clet (_, expr, body) - | Clet_mut (_, _, expr, body) -> + | Cvar id -> + Env.use_var env id Immutable + | Cvar_mut id -> + Env.use_var env id Mutable + | Clet (id, expr, body) -> + check env expr; + check (Env.bind_var env (VP.var id) Immutable) body + | Clet_mut (id, _, expr, body) -> check env expr; - check env body + check (Env.bind_var env (VP.var id) Mutable) body | Cphantom_let (_, _, expr) -> check env expr - | Cassign (_, expr) -> + | Cassign (id, expr) -> + Env.use_var env id Mutable; check env expr | Ctuple exprs -> List.iter (check env) exprs @@ -163,18 +226,21 @@ let rec check env (expr : Cmm.expression) = | Recursive -> env_extended | Nonrecursive -> env in - List.iter (fun (_, _, handler, _) -> check env_handler handler) handlers + List.iter (fun (_, args, handler, _) -> + let env_handler = Env.bind_params env_handler args in + check env_handler handler) + handlers | Cexit (cont, args) -> Env.jump env ~cont ~arg_num:(List.length args) - | Ctrywith (body, _, handler, _) -> + | Ctrywith (body, id, handler, _) -> (* Jumping from inside a trywith body to outside isn't very nice, but it's handled correctly by Linearize, as it happens when compiling match ... with exception ..., for instance, so it is not reported as an error. *) check env body; - check env handler + check (Env.bind_var env (VP.var id) Immutable) handler let run ppf (fundecl : Cmm.fundecl) = - let env = Env.init () in + let env = Env.bind_params (Env.init ()) fundecl.fun_args in check env fundecl.fun_body; Env.report ppf diff --git a/asmcomp/cmmgen.ml b/asmcomp/cmmgen.ml index 8c520809..3c06fcf5 100644 --- a/asmcomp/cmmgen.ml +++ b/asmcomp/cmmgen.ml @@ -39,6 +39,7 @@ type boxed_number = type env = { unboxed_ids : (V.t * boxed_number) V.tbl; + mutable_ids : V.Set.t; notify_catch : (Cmm.expression list -> unit) IntMap.t; environment_param : V.t option; } @@ -61,6 +62,7 @@ type env = { let empty_env = { unboxed_ids = V.empty; + mutable_ids = V.Set.empty; notify_catch = IntMap.empty; environment_param = None; } @@ -79,6 +81,14 @@ let add_unboxed_id id unboxed_id bn env = unboxed_ids = V.add id (unboxed_id, bn) env.unboxed_ids; } +let is_mutable_id id env = + V.Set.mem id env.mutable_ids + +let add_mutable_id id env = + { env with + mutable_ids = V.Set.add id env.mutable_ids; + } + let add_notify_catch n f env = { env with notify_catch = IntMap.add n f env.notify_catch @@ -121,9 +131,14 @@ let min_mut x y = | Immutable,_ | _,Immutable -> Immutable | Mutable,Mutable -> Mutable -let get_field env mut ptr n dbg = +let get_field env imm_or_pointer mut ptr n dbg = let mut = min_mut mut (mut_from_env env ptr) in - get_field_gen mut ptr n dbg + let memory_chunk = + match imm_or_pointer with + | Immediate -> Word_int + | Pointer -> Word_val + in + get_field_gen ~memory_chunk mut ptr n dbg (* Translate structured constants to Cmm data items *) @@ -334,14 +349,32 @@ let is_unboxed_number_cmm ~strict ~kind cmm = aux cmm; !r +let machtype_of_value_kind (value_kind : Lambda.value_kind) = + match value_kind with + | Pgenval + | Pfloatval + | Pboxedintval _ -> + Cmm.typ_val + | Pintval -> + Cmm.typ_int + (* Translate an expression *) let rec transl env e = match e with Uvar id -> begin match is_unboxed_id id env with - | None -> Cvar id - | Some (unboxed_id, bn) -> box_number bn (Cvar unboxed_id) + | None -> + if is_mutable_id id env + then Cvar_mut id + else Cvar id + | Some (unboxed_id, bn) -> + let var = + if is_mutable_id unboxed_id env + then Cvar_mut unboxed_id + else Cvar unboxed_id + in + box_number bn var end | Uconst sc -> transl_constant Debuginfo.none sc @@ -537,8 +570,7 @@ let rec transl env e = | ((Pfield_computed|Psequand | Prunstack | Pperform | Presume | Preperform | Pdls_get - | Patomic_load _ | Patomic_exchange - | Patomic_cas | Patomic_fetch_add + | Patomic_load | Psequor | Pnot | Pnegint | Paddint | Psubint | Pmulint | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Pintoffloat | Pfloatofint @@ -558,7 +590,7 @@ let rec transl env e = | Pandbint _ | Porbint _ | Pxorbint _ | Plslbint _ | Plsrbint _ | Pasrbint _ | Pbintcomp (_, _) | Pstring_load _ | Pbytes_load _ | Pbytes_set _ | Pbigstring_load _ | Pbigstring_set _ - | Pbbswap _ | Ppoll ), _) + | Pbbswap _ | Ppoll | Pmakelazyblock _ ), _) -> fatal_error "Cmmgen.transl:prim" end @@ -569,7 +601,7 @@ let rec transl env e = can be checked *) if Array.length s.us_index_blocks = 0 then make_switch - (untag_int (transl env arg) dbg) + (Tagged (transl env arg)) s.us_index_consts (Array.map (fun expr -> transl env expr, dbg) s.us_actions_consts) dbg @@ -641,24 +673,26 @@ let rec transl env e = let inc = match dir with Upto -> Caddi | Downto -> Csubi in let raise_num = next_raise_count () in let id_prev = VP.create (V.create_local "*id_prev*") in + let env = add_mutable_id (VP.var id) env in return_unit dbg (Clet_mut (id, typ_int, transl env low, - bind_nonvar "bound" (transl env high) (fun high -> + bind "bound" (transl env high) (fun high -> ccatch (raise_num, [], Cifthenelse - (Cop(Ccmpi tst, [Cvar (VP.var id); high], dbg), + (Cop(Ccmpi tst, [Cvar_mut (VP.var id); high], dbg), dbg, Cexit (raise_num, []), dbg, create_loop (Csequence (remove_unit(transl env body), - Clet(id_prev, Cvar (VP.var id), + Clet(id_prev, Cvar_mut (VP.var id), Csequence (Cassign(VP.var id, - Cop(inc, [Cvar (VP.var id); Cconst_int (2, dbg)], + Cop(inc, [Cvar_mut (VP.var id); + Cconst_int (2, dbg)], dbg)), Cifthenelse (Cop(Ccmpi Ceq, [Cvar (VP.var id_prev); high], @@ -704,12 +738,12 @@ and transl_catch env nfail ids body handler dbg = let body = transl env_body body in let new_env, rewrite, ids = List.fold_right - (fun (id, _kind, u) (env, rewrite, ids) -> + (fun (id, kind, u) (env, rewrite, ids) -> match !u with | No_unboxing | Boxed (_, true) | No_result -> env, (fun x -> x) :: rewrite, - (id, Cmm.typ_val) :: ids + (id, machtype_of_value_kind kind) :: ids | Boxed (bn, false) -> let unboxed_id = V.create_local (VP.name id) in add_unboxed_id (VP.var id) unboxed_id bn env, @@ -795,8 +829,10 @@ and transl_prim_1 env p arg dbg = Popaque -> opaque (transl env arg) dbg (* Heap operations *) - | Pfield(n, _, mut) -> - get_field env mut (transl env arg) n dbg + | Pmakelazyblock tag -> + make_alloc dbg (Lambda.tag_of_lazy_tag tag) [transl env arg] + | Pfield(n, imm_or_pointer, mut) -> + get_field env imm_or_pointer mut (transl env arg) n dbg | Pfloatfield n -> let ptr = transl env arg in box_float dbg (floatfield n ptr dbg) @@ -861,16 +897,11 @@ and transl_prim_1 env p arg dbg = dbg) | Pdls_get -> Cop(Cdls_get, [transl env arg], dbg) - | Patomic_load {immediate_or_pointer = Immediate} -> - Cop(mk_load_atomic Word_int, [transl env arg], dbg) - | Patomic_load {immediate_or_pointer = Pointer} -> - Cop(mk_load_atomic Word_val, [transl env arg], dbg) | Ppoll -> (Csequence (remove_unit (transl env arg), return_unit dbg (Cop(Cpoll, [], dbg)))) | (Pfield_computed | Psequand | Psequor | Prunstack | Presume | Preperform - | Patomic_exchange | Patomic_cas | Patomic_fetch_add | Paddint | Psubint | Pmulint | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Paddfloat | Psubfloat | Pmulfloat | Pdivfloat @@ -886,7 +917,9 @@ and transl_prim_1 env p arg dbg = | Plslbint _ | Plsrbint _ | Pasrbint _ | Pbintcomp (_, _) | Pbigarrayref (_, _, _, _) | Pbigarrayset (_, _, _, _) | Pbigarraydim _ | Pstring_load _ | Pbytes_load _ | Pbytes_set _ - | Pbigstring_load _ | Pbigstring_set _) + | Pbigstring_load _ | Pbigstring_set _ + | Patomic_load + ) -> fatal_errorf "Cmmgen.transl_prim_1: %a" Printclambda_primitives.primitive p @@ -903,6 +936,12 @@ and transl_prim_2 env p arg1 arg2 dbg = let float_val = transl_unbox_float dbg env arg2 in setfloatfield n init ptr float_val dbg + | Patomic_load -> + let ptr = transl env arg1 in + let ofs = transl env arg2 in + Cop(mk_load_atomic Word_val, + [field_address_computed ptr ofs dbg], dbg) + (* Boolean operations *) | Psequand -> let dbg' = Debuginfo.none in @@ -1054,14 +1093,7 @@ and transl_prim_2 env p arg1 arg2 dbg = tag_int (Cop(Ccmpi cmp, [transl_unbox_int dbg env bi arg1; transl_unbox_int dbg env bi arg2], dbg)) dbg - | Patomic_exchange -> - Cop (Cextcall ("caml_atomic_exchange", typ_val, [], false), - [transl env arg1; transl env arg2], dbg) - | Patomic_fetch_add -> - Cop (Cextcall ("caml_atomic_fetch_add", typ_int, [], false), - [transl env arg1; transl env arg2], dbg) | Prunstack | Pperform | Presume | Preperform | Pdls_get - | Patomic_cas | Patomic_load _ | Pnot | Pnegint | Pintoffloat | Pfloatofint | Pnegfloat | Pabsfloat | Pstringlength | Pbyteslength | Pbytessetu | Pbytessets | Pisint | Pbswap16 | Pint_as_pointer | Popaque | Pread_symbol _ @@ -1071,6 +1103,7 @@ and transl_prim_2 env p arg1 arg2 dbg = | Parraysets _ | Pbintofint _ | Pintofbint _ | Pcvtbint (_, _) | Pnegbint _ | Pbigarrayref (_, _, _, _) | Pbigarrayset (_, _, _, _) | Pbigarraydim _ | Pbytes_set _ | Pbigstring_set _ | Pbbswap _ | Ppoll + | Pmakelazyblock _ -> fatal_errorf "Cmmgen.transl_prim_2: %a" Printclambda_primitives.primitive p @@ -1113,10 +1146,6 @@ and transl_prim_3 env p arg1 arg2 arg3 dbg = bigstring_set size unsafe (transl env arg1) (transl env arg2) (transl_unbox_sized size dbg env arg3) dbg - | Patomic_cas -> - Cop (Cextcall ("caml_atomic_cas", typ_int, [], false), - [transl env arg1; transl env arg2; transl env arg3], dbg) - (* Effects *) | Prunstack -> @@ -1132,7 +1161,7 @@ and transl_prim_3 env p arg1 arg2 arg3 dbg = dbg) | Pperform | Pdls_get | Presume - | Patomic_exchange | Patomic_fetch_add | Patomic_load _ + | Patomic_load | Pfield_computed | Psequand | Psequor | Pnot | Pnegint | Paddint | Psubint | Pmulint | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Pintoffloat | Pfloatofint | Pnegfloat | Pabsfloat | Paddfloat | Psubfloat @@ -1149,6 +1178,7 @@ and transl_prim_3 env p arg1 arg2 arg3 dbg = | Pxorbint _ | Plslbint _ | Plsrbint _ | Pasrbint _ | Pbintcomp (_, _) | Pbigarrayref (_, _, _, _) | Pbigarrayset (_, _, _, _) | Pbigarraydim _ | Pstring_load _ | Pbytes_load _ | Pbigstring_load _ | Pbbswap _ | Ppoll + | Pmakelazyblock _ -> fatal_errorf "Cmmgen.transl_prim_3: %a" Printclambda_primitives.primitive p @@ -1163,9 +1193,9 @@ and transl_prim_4 env p arg1 arg2 arg3 arg4 dbg = dbg) | Psetfield_computed _ | Pbytessetu | Pbytessets | Parraysetu _ - | Parraysets _ | Pbytes_set _ | Pbigstring_set _ | Patomic_cas + | Parraysets _ | Pbytes_set _ | Pbigstring_set _ | Prunstack | Preperform | Pperform | Pdls_get - | Patomic_exchange | Patomic_fetch_add | Patomic_load _ + | Patomic_load | Pfield_computed | Psequand | Psequor | Pnot | Pnegint | Paddint | Psubint | Pmulint | Pandint | Porint | Pxorint | Plslint | Plsrint | Pasrint | Pintoffloat | Pfloatofint | Pnegfloat | Pabsfloat | Paddfloat | Psubfloat @@ -1182,6 +1212,7 @@ and transl_prim_4 env p arg1 arg2 arg3 arg4 dbg = | Pxorbint _ | Plslbint _ | Plsrbint _ | Pasrbint _ | Pbintcomp (_, _) | Pbigarrayref (_, _, _, _) | Pbigarrayset (_, _, _, _) | Pbigarraydim _ | Pstring_load _ | Pbytes_load _ | Pbigstring_load _ | Pbbswap _ | Ppoll + | Pmakelazyblock _ -> fatal_errorf "Cmmgen.transl_prim_3: %a" Printclambda_primitives.primitive p @@ -1238,19 +1269,27 @@ and transl_let env str kind id exp transl_body = (* N.B. [body] must still be traversed even if [exp] will never return: there may be constant closures inside that need lifting out. *) begin match str, kind with - | Immutable, _ -> Clet(id, cexp, transl_body env) - | Mutable, Pintval -> Clet_mut(id, typ_int, cexp, transl_body env) - | Mutable, _ -> Clet_mut(id, typ_val, cexp, transl_body env) + | Immutable, _ -> + Clet(id, cexp, transl_body env) + | Mutable, Pintval -> + Clet_mut(id, typ_int, cexp, + transl_body (add_mutable_id (VP.var id) env)) + | Mutable, _ -> + Clet_mut(id, typ_val, cexp, + transl_body (add_mutable_id (VP.var id) env)) end | Boxed (boxed_number, false) -> let unboxed_id = V.create_local (VP.name id) in let v = VP.create unboxed_id in let cexp = unbox_number dbg boxed_number cexp in - let body = + let body env = transl_body (add_unboxed_id (VP.var id) unboxed_id boxed_number env) in begin match str, boxed_number with - | Immutable, _ -> Clet (v, cexp, body) - | Mutable, bn -> Clet_mut (v, typ_of_boxed_number bn, cexp, body) + | Immutable, _ -> + Clet (v, cexp, body env) + | Mutable, bn -> + Clet_mut (v, typ_of_boxed_number bn, cexp, + body (add_mutable_id unboxed_id env)) end and make_catch ncatch body handler dbg = match body with @@ -1402,7 +1441,6 @@ and transl_switch dbg env arg index cases = match Array.length cases with let cases = Array.map (transl env) cases in transl_switch_clambda dbg arg index cases - (* Translate a function definition *) let transl_function f = @@ -1422,8 +1460,13 @@ let transl_function f = else [ Reduce_code_size ] in + let fun_args = + List.map (fun (id, value_kind) -> + (id, machtype_of_value_kind value_kind)) + f.params + in Cfunction {fun_name = f.label; - fun_args = List.map (fun (id, _) -> (id, typ_val)) f.params; + fun_args; fun_body = cmm_body; fun_codegen_options; fun_poll = f.poll; diff --git a/asmcomp/emitaux.ml b/asmcomp/emitaux.ml index 306e2492..835e3f4b 100644 --- a/asmcomp/emitaux.ml +++ b/asmcomp/emitaux.ml @@ -35,7 +35,10 @@ let emit_printf fmt = let emit_int32 n = emit_printf "0x%lx" n +let macosx = Config.system = "macosx" + let emit_symbol s = + if macosx then output_char !output_channel '_'; for i = 0 to String.length s - 1 do let c = s.[i] in match c with @@ -45,7 +48,8 @@ let emit_symbol s = if c = Compilenv.symbol_separator then output_char !output_channel c else - Printf.fprintf !output_channel "$%02x" (Char.code c) + Printf.fprintf !output_channel "%s%02x" Compilenv.escape_prefix + (Char.code c) done let emit_string_literal s = @@ -111,6 +115,29 @@ let emit_float64_split_directive directive x = let emit_float32_directive directive x = emit_printf "\t%s\t0x%lx\n" directive x +let emit_size_directive symbol = + if Config.asm_size_type_directives then begin + emit_string "\t.size\t"; + emit_symbol symbol; + emit_string ", . - "; + emit_symbol symbol; + emit_char '\n' + end + +let emit_type_directive symbol ty = + if Config.asm_size_type_directives then begin + emit_string "\t.type\t"; + emit_symbol symbol; + emit_string ", "; + emit_string ty; + emit_char '\n' + end + +let emit_nonexecstack_note () = + if Config.with_nonexecstack_note then begin + emit_string "\t.section .note.GNU-stack,\"\",%progbits\n" + end + (* Record live pointers at call points *) type frame_debuginfo = diff --git a/asmcomp/emitaux.mli b/asmcomp/emitaux.mli index d174fa92..37f1b18f 100644 --- a/asmcomp/emitaux.mli +++ b/asmcomp/emitaux.mli @@ -30,6 +30,19 @@ val emit_float64_directive: string -> int64 -> unit val emit_float64_split_directive: string -> int64 -> unit val emit_float32_directive: string -> int32 -> unit +val emit_size_directive: string -> unit +(** [emit_size_directive symbol] + Emit a [.size] assembler directive for the given [symbol] when it is + supported by the assembler *) + +val emit_type_directive: string -> string -> unit +(** [emit_type_directive symbol typ] + Emit a [.type] assembler directive that [symbol] has type [typ] when it is + supported by the assembler *) + +val emit_nonexecstack_note : unit -> unit +(** Emit a [.note.GNU-stack] section when it is supported by the linker *) + val reset : unit -> unit val reset_debug_info: unit -> unit val emit_debug_info: Debuginfo.t -> unit diff --git a/asmcomp/power/emit.mlp b/asmcomp/power/emit.mlp index f9303ea6..d0c88c28 100644 --- a/asmcomp/power/emit.mlp +++ b/asmcomp/power/emit.mlp @@ -184,7 +184,7 @@ let load_mnemonic = function | Sixteen_signed -> "lha" | Thirtytwo_unsigned -> "lwz" | Thirtytwo_signed -> "lwa" - | Word_int | Word_val -> "ld" + | Word_int | Word_val | Sixtyfour -> "ld" | Single -> "lfs" | Double -> "lfd" @@ -192,7 +192,7 @@ let store_mnemonic = function | Byte_unsigned | Byte_signed -> "stb" | Sixteen_unsigned | Sixteen_signed -> "sth" | Thirtytwo_unsigned | Thirtytwo_signed -> "stw" - | Word_int | Word_val -> "std" + | Word_int | Word_val | Sixtyfour -> "std" | Single -> "stfs" | Double -> "stfd" @@ -480,6 +480,7 @@ module BR = Branch_relaxation.Make (struct | Lreturn -> 2 | Llabel _ -> 0 | Lbranch _ -> 1 + | Lcondbranch (Ifloattest(CFle | CFnle | CFge | CFnge), _) -> 3 | Lcondbranch _ -> 2 | Lcondbranch3(lbl0, lbl1, lbl2) -> 1 + (if lbl0 = None then 0 else 1) @@ -1018,7 +1019,7 @@ let fundecl fundecl = end; (* Function entry point *) ` .globl {emit_symbol fundecl.fun_name}\n`; - ` .type {emit_symbol fundecl.fun_name}, @function\n`; + emit_type_directive fundecl.fun_name "@function"; `{emit_symbol fundecl.fun_name}:\n`; `0: addis 2, 12, (.TOC. - 0b)@ha\n`; ` addi 2, 2, (.TOC. - 0b)@l\n`; @@ -1054,7 +1055,7 @@ let fundecl fundecl = (* Emit the glue code to handle bound errors *) emit_call_bound_errors env; cfi_endproc(); - ` .size {emit_symbol fundecl.fun_name}, . - {emit_symbol fundecl.fun_name}\n`; + emit_size_directive fundecl.fun_name; (* Emit the numeric literals *) if env.float_literals <> [] then begin emit_string rodata_space; @@ -1082,7 +1083,7 @@ let fundecl fundecl = let declare_global_data s = ` .globl {emit_symbol s}\n`; - ` .type {emit_symbol s}, @object\n` + emit_type_directive s "@object" let emit_item = function Cglobal_symbol s -> @@ -1166,8 +1167,9 @@ let end_assembly() = efa_def_label = (fun l -> `{emit_label l}:\n`); efa_string = (fun s -> emit_bytes_directive " .byte " (s ^ "\000")) }; + emit_size_directive lbl; (* Emit the TOC entries *) emit_string toc_space; emit_toctable(); Hashtbl.clear tocref_entries; - ` .section .note.GNU-stack,\"\",%progbits\n` + emit_nonexecstack_note () diff --git a/asmcomp/printcmm.ml b/asmcomp/printcmm.ml index 7f98cc21..755119f1 100644 --- a/asmcomp/printcmm.ml +++ b/asmcomp/printcmm.ml @@ -81,6 +81,7 @@ let chunk = function | Sixteen_signed -> "signed int16" | Thirtytwo_unsigned -> "unsigned int32" | Thirtytwo_signed -> "signed int32" + | Sixtyfour -> "int64" | Word_int -> "int" | Word_val -> "val" | Single -> "float32" @@ -117,10 +118,15 @@ let operation d = function | Capply _ty -> "app" ^ location d | Cextcall(lbl, _ty_res, _ty_args, _alloc) -> Printf.sprintf "extcall \"%s\"%s" lbl (location d) - | Cload {memory_chunk; mutability} -> ( - match mutability with - | Asttypes.Immutable -> Printf.sprintf "load %s" (chunk memory_chunk) - | Asttypes.Mutable -> Printf.sprintf "load_mut %s" (chunk memory_chunk)) + | Cload {memory_chunk; mutability; is_atomic} -> + let op = + ["load"] + @ (match mutability with + | Asttypes.Immutable -> [] + | Asttypes.Mutable -> ["mut"]) + @ (if is_atomic then ["atomic"] else []) + in + Printf.sprintf "%s %s" (String.concat "_" op) (chunk memory_chunk) | Calloc -> "alloc" ^ location d | Cstore (c, init) -> let init = @@ -168,6 +174,7 @@ let rec expr ppf = function | Cconst_float (n, _dbg) -> fprintf ppf "%F" n | Cconst_symbol (s, _dbg) -> fprintf ppf "\"%s\"" s | Cvar id -> V.print ppf id + | Cvar_mut id -> fprintf ppf "!%a" V.print id | Creturn_addr -> fprintf ppf "return_addr" | Clet(id, def, (Clet(_, _, _) as body)) -> let print_binding id ppf def = diff --git a/asmcomp/riscv/NOTES.md b/asmcomp/riscv/NOTES.md index 0f17876b..8f9021f4 100644 --- a/asmcomp/riscv/NOTES.md +++ b/asmcomp/riscv/NOTES.md @@ -13,4 +13,4 @@ Debian architecture name: `riscv64` - https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc * Assembly language manual - - https://github.com/riscv/riscv-asm-manual/blob/master/riscv-asm.md + - https://github.com/riscv-non-isa/riscv-asm-manual/blob/main/src/asm-manual.adoc diff --git a/asmcomp/riscv/emit.mlp b/asmcomp/riscv/emit.mlp index 964dc4db..a08d9f9a 100644 --- a/asmcomp/riscv/emit.mlp +++ b/asmcomp/riscv/emit.mlp @@ -339,7 +339,7 @@ let emit_instr env i = at noalloc calls *) ` mv s0, sp\n`; cfi_remember_state (); - cfi_def_cfa_register ~reg:21; + cfi_def_cfa_register ~reg:8; let ofs = Domainstate.(idx_of_field Domain_c_stack) * 8 in ` ld sp, {emit_int ofs}({emit_reg reg_domain_state_ptr})\n`; ` {emit_call func}\n`; @@ -354,7 +354,7 @@ let emit_instr env i = assert (not is_atomic); ` flw {emit_reg i.res.(0)}, {emit_int ofs}({emit_reg i.arg.(0)})\n`; ` fcvt.d.s {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n` - | Lop(Iload { memory_chunk = Word_int | Word_val; addressing_mode = Iindexed ofs; is_atomic } ) -> + | Lop(Iload { memory_chunk = Sixtyfour | Word_int | Word_val; addressing_mode = Iindexed ofs; is_atomic } ) -> if is_atomic then ` fence rw, rw\n`; ` ld {emit_reg i.res.(0)}, {emit_int ofs}({emit_reg i.arg.(0)})\n`; if is_atomic then ` fence r, rw\n` @@ -368,7 +368,7 @@ let emit_instr env i = | Sixteen_signed -> "lh" | Thirtytwo_unsigned -> "lwu" | Thirtytwo_signed -> "lw" - | Word_int | Word_val | Single -> assert false + | Word_int | Word_val | Single | Sixtyfour -> assert false | Double -> "fld" in ` {emit_string instr} {emit_reg i.res.(0)}, {emit_int ofs}({emit_reg i.arg.(0)})\n` @@ -389,6 +389,7 @@ let emit_instr env i = | Sixteen_unsigned | Sixteen_signed -> "sh" | Thirtytwo_unsigned | Thirtytwo_signed -> "sw" | Word_int | Word_val | Single -> assert false + | Sixtyfour -> "sd" | Double -> "fsd" in ` {emit_string instr} {emit_reg i.arg.(0)}, {emit_int ofs}({emit_reg i.arg.(1)})\n` @@ -619,7 +620,7 @@ let rec emit_all env = function let fundecl fundecl = let env = mk_env fundecl in ` .globl {emit_symbol fundecl.fun_name}\n`; - ` .type {emit_symbol fundecl.fun_name}, @function\n`; + emit_type_directive fundecl.fun_name "@function"; emit_named_text_section fundecl.fun_name; ` .align 2\n`; `{emit_symbol fundecl.fun_name}:\n`; @@ -666,7 +667,7 @@ let fundecl fundecl = end; cfi_endproc(); - ` .size {emit_symbol fundecl.fun_name}, .-{emit_symbol fundecl.fun_name}\n`; + emit_size_directive fundecl.fun_name; (* Emit the float literals *) if env.float_literals <> [] then begin ` {emit_string rodata_space}\n`; @@ -682,7 +683,7 @@ let fundecl fundecl = let declare_global_data s = ` .globl {emit_symbol s}\n`; - ` .type {emit_symbol s}, @object\n` + emit_type_directive s "@object" let emit_item = function | Cglobal_symbol s -> @@ -759,4 +760,6 @@ let end_assembly() = ` .long ({emit_label lbl} - .) + {emit_int32 ofs}\n`); efa_def_label = (fun l -> `{emit_label l}:\n`); efa_string = (fun s -> emit_bytes_directive " .byte " (s ^ "\000")) - } + }; + emit_size_directive lbl; + emit_nonexecstack_note () diff --git a/asmcomp/s390x/emit.mlp b/asmcomp/s390x/emit.mlp index 9959ff15..9382a4e1 100644 --- a/asmcomp/s390x/emit.mlp +++ b/asmcomp/s390x/emit.mlp @@ -384,7 +384,7 @@ let emit_instr env i = cfi_def_cfa_register "%r12"; (* NB: gdb has asserts on contiguous stacks that mean it will not unwind through this unless we were to tag this - calling frame with cfi_signal_frame in it's definition. *) + calling frame with cfi_signal_frame in its definition. *) let offset = Domainstate.(idx_of_field Domain_c_stack) * 8 in ` lg %r15, {emit_int offset}(%r10)\n`; emit_call func; @@ -405,7 +405,7 @@ let emit_instr env i = | Sixteen_signed -> "lgh" | Thirtytwo_unsigned -> "llgf" | Thirtytwo_signed -> "lgf" - | Word_int | Word_val -> "lg" + | Word_int | Word_val | Sixtyfour -> "lg" | Single -> "ley" | Double -> "ldy" in emit_load_store loadinstr addressing_mode i.arg 0 i.res.(0); @@ -421,7 +421,7 @@ let emit_instr env i = Byte_unsigned | Byte_signed -> "stcy" | Sixteen_unsigned | Sixteen_signed -> "sthy" | Thirtytwo_unsigned | Thirtytwo_signed -> "sty" - | Word_int | Word_val -> "stg" + | Word_int | Word_val | Sixtyfour -> "stg" | Single -> assert false | Double -> "stdy" in emit_load_store storeinstr addr i.arg 1 i.arg.(0) @@ -718,7 +718,7 @@ let fundecl fundecl = let env = mk_env fundecl in ` .globl {emit_symbol fundecl.fun_name}\n`; emit_debug_info fundecl.fun_dbg; - ` .type {emit_symbol fundecl.fun_name}, @function\n`; + emit_type_directive fundecl.fun_name "@function"; emit_named_text_section fundecl.fun_name; ` .align 8\n`; `{emit_symbol fundecl.fun_name}:\n`; @@ -763,6 +763,7 @@ let fundecl fundecl = end; cfi_endproc (); + emit_size_directive fundecl.fun_name; (* Emit the numeric literals *) if env.float_literals <> [] || env.int_literals <> [] then begin emit_string rodata_space; @@ -782,7 +783,7 @@ let fundecl fundecl = let declare_global_data s = ` .globl {emit_symbol s}\n`; - ` .type {emit_symbol s}, @object\n` + emit_type_directive s "@object" let emit_item = function Cglobal_symbol s -> @@ -865,5 +866,5 @@ let end_assembly() = efa_def_label = (fun l -> `{emit_label l}:\n`); efa_string = (fun s -> emit_bytes_directive " .byte " (s ^ "\000")) }; - (* Mark stack as non-executable *) - ` .section .note.GNU-stack,\"\",%progbits\n` + emit_size_directive lbl; + emit_nonexecstack_note () diff --git a/asmcomp/selectgen.ml b/asmcomp/selectgen.ml index 8226a39c..fcf3aee9 100644 --- a/asmcomp/selectgen.ml +++ b/asmcomp/selectgen.ml @@ -110,7 +110,7 @@ let size_expr (env:environment) exp = | Cconst_symbol _ -> Arch.size_addr | Cconst_float _ -> Arch.size_float - | Cvar id -> + | Cvar id | Cvar_mut id -> begin try V.Map.find id localenv with Not_found -> @@ -336,7 +336,7 @@ method is_simple_expr = function List.for_all self#is_simple_expr args end | Cassign _ | Cifthenelse _ | Cswitch _ | Ccatch _ | Cexit _ - | Ctrywith _ -> false + | Ctrywith _ | Cvar_mut _ -> false (* Analyses the effects and coeffects of an expression. This is used across a whole list of expressions with a view to determining which expressions @@ -355,6 +355,7 @@ method effects_of exp = match exp with | Cconst_int _ | Cconst_natint _ | Cconst_float _ | Cconst_symbol _ | Cvar _ | Creturn_addr -> EC.none + | Cvar_mut _ -> EC.coeffect_only Coeffect.Read_mutable | Ctuple el -> EC.join_list_map el self#effects_of | Clet (_id, arg, body) | Clet_mut (_id, _, arg, body) -> EC.join (self#effects_of arg) (self#effects_of body) @@ -605,7 +606,7 @@ method emit_expr (env:environment) exp = | Creturn_addr -> let r = self#regs_for typ_int in Some(self#insert_op env Ireturn_addr [||] r) - | Cvar v -> + | Cvar v | Cvar_mut v -> begin try Some(env_find v env) with Not_found -> @@ -1122,7 +1123,7 @@ method emit_tail (env:environment) exp = end | Cop _ | Cconst_int _ | Cconst_natint _ | Cconst_float _ | Cconst_symbol _ - | Cvar _ + | Cvar _ | Cvar_mut _ | Creturn_addr | Cassign _ | Ctuple _ diff --git a/asmcomp/thread_sanitizer.ml b/asmcomp/thread_sanitizer.ml index 362a8953..685bbd7f 100644 --- a/asmcomp/thread_sanitizer.ml +++ b/asmcomp/thread_sanitizer.ml @@ -34,6 +34,7 @@ let bit_size memory_chunk = | Byte_unsigned | Byte_signed -> 8 | Sixteen_unsigned | Sixteen_signed -> 16 | Thirtytwo_unsigned | Thirtytwo_signed -> 32 + | Sixtyfour -> 64 | Word_int | Word_val -> Sys.word_size | Single -> 32 | Double -> 64 @@ -57,7 +58,7 @@ end let machtype_of_memory_chunk = function | Byte_unsigned | Byte_signed | Sixteen_unsigned | Sixteen_signed - | Thirtytwo_unsigned | Thirtytwo_signed | Word_int -> + | Thirtytwo_unsigned | Thirtytwo_signed | Word_int | Sixtyfour -> typ_int | Word_val -> typ_val | Single | Double -> typ_float @@ -154,7 +155,7 @@ let wrap_entry_exit expr = | Cconst_natint (_, _) | Cconst_float (_, _) | Cconst_symbol (_, _) - | Cvar _ | Ctuple _ | Creturn_addr ) as expr -> + | Cvar _ | Cvar_mut _ | Ctuple _ | Creturn_addr ) as expr -> let id = VP.create (V.create_local "res") in Clet (id, expr, Csequence (call_exit, Cvar (VP.var id))) in @@ -285,7 +286,7 @@ let instrument body = Cswitch (aux e, cases, handlers, dbg_none) (* no instrumentation *) | ( Cconst_int _ | Cconst_natint _ | Cconst_float _ | Cconst_symbol _ - | Cvar _ | Creturn_addr ) as c -> + | Cvar _ | Cvar_mut _ | Creturn_addr ) as c -> c in body |> aux |> wrap_entry_exit diff --git a/asmcomp/x86_proc.ml b/asmcomp/x86_proc.ml index b7abe4d3..959559fa 100644 --- a/asmcomp/x86_proc.ml +++ b/asmcomp/x86_proc.ml @@ -82,12 +82,8 @@ let string_of_symbol prefix s = Buffer.add_string b prefix; String.iter (fun c -> - (* FIXME: using $ to prefix escaped characters can make names - ambiguous if the symbol separator is also set to $; a different - escape prefix should be used in this case, if this ever causes - problems in the real world. *) if is_special_char c then - Printf.bprintf b "$%02x" (Char.code c) + Printf.bprintf b "%s%02x" Compilenv.escape_prefix (Char.code c) else Buffer.add_char b c ) diff --git a/boot/menhir/menhirLib.ml b/boot/menhir/menhirLib.ml index ee7f581f..8cc924e3 100644 --- a/boot/menhir/menhirLib.ml +++ b/boot/menhir/menhirLib.ml @@ -3834,5 +3834,5 @@ module MakeEngineTable (T : TableFormat.TABLES) = struct end end module StaticVersion = struct -let require_20231231 = () +let require_20240715 = () end diff --git a/boot/menhir/menhirLib.mli b/boot/menhir/menhirLib.mli index 2156459d..870b50eb 100644 --- a/boot/menhir/menhirLib.mli +++ b/boot/menhir/menhirLib.mli @@ -1793,5 +1793,5 @@ module MakeEngineTable and type nonterminal = int end module StaticVersion : sig -val require_20231231: unit +val require_20240715: unit end diff --git a/boot/menhir/parser.ml b/boot/menhir/parser.ml index 5dc3ac7e..93187f1d 100644 --- a/boot/menhir/parser.ml +++ b/boot/menhir/parser.ml @@ -2,7 +2,7 @@ (* This generated code requires the following version of MenhirLib: *) let () = - MenhirLib.StaticVersion.require_20231231 + MenhirLib.StaticVersion.require_20240715 module MenhirBasics = struct @@ -20,7 +20,7 @@ module MenhirBasics = struct | VAL | UNDERSCORE | UIDENT of ( -# 848 "parsing/parser.mly" +# 836 "parsing/parser.mly" (string) # 26 "parsing/parser.ml" ) @@ -32,7 +32,7 @@ module MenhirBasics = struct | THEN | STRUCT | STRING of ( -# 835 "parsing/parser.mly" +# 823 "parsing/parser.mly" (string * Location.t * string option) # 38 "parsing/parser.ml" ) @@ -45,12 +45,12 @@ module MenhirBasics = struct | RBRACKET | RBRACE | QUOTED_STRING_ITEM of ( -# 839 "parsing/parser.mly" +# 827 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) # 51 "parsing/parser.ml" ) | QUOTED_STRING_EXPR of ( -# 837 "parsing/parser.mly" +# 825 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) # 56 "parsing/parser.ml" ) @@ -58,7 +58,7 @@ module MenhirBasics = struct | QUESTION | PRIVATE | PREFIXOP of ( -# 821 "parsing/parser.mly" +# 809 "parsing/parser.mly" (string) # 64 "parsing/parser.ml" ) @@ -68,7 +68,7 @@ module MenhirBasics = struct | PERCENT | OR | OPTLABEL of ( -# 814 "parsing/parser.mly" +# 802 "parsing/parser.mly" (string) # 74 "parsing/parser.ml" ) @@ -89,12 +89,12 @@ module MenhirBasics = struct | MATCH | LPAREN | LIDENT of ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) # 95 "parsing/parser.ml" ) | LETOP of ( -# 779 "parsing/parser.mly" +# 767 "parsing/parser.mly" (string) # 100 "parsing/parser.ml" ) @@ -114,39 +114,39 @@ module MenhirBasics = struct | LBRACE | LAZY | LABEL of ( -# 784 "parsing/parser.mly" +# 772 "parsing/parser.mly" (string) # 120 "parsing/parser.ml" ) | INT of ( -# 783 "parsing/parser.mly" +# 771 "parsing/parser.mly" (string * char option) # 125 "parsing/parser.ml" ) | INITIALIZER | INHERIT | INFIXOP4 of ( -# 777 "parsing/parser.mly" +# 765 "parsing/parser.mly" (string) # 132 "parsing/parser.ml" ) | INFIXOP3 of ( -# 776 "parsing/parser.mly" +# 764 "parsing/parser.mly" (string) # 137 "parsing/parser.ml" ) | INFIXOP2 of ( -# 775 "parsing/parser.mly" +# 763 "parsing/parser.mly" (string) # 142 "parsing/parser.ml" ) | INFIXOP1 of ( -# 774 "parsing/parser.mly" +# 762 "parsing/parser.mly" (string) # 147 "parsing/parser.ml" ) | INFIXOP0 of ( -# 773 "parsing/parser.mly" +# 761 "parsing/parser.mly" (string) # 152 "parsing/parser.ml" ) @@ -154,7 +154,7 @@ module MenhirBasics = struct | IN | IF | HASHOP of ( -# 832 "parsing/parser.mly" +# 820 "parsing/parser.mly" (string) # 160 "parsing/parser.ml" ) @@ -167,7 +167,7 @@ module MenhirBasics = struct | FUN | FOR | FLOAT of ( -# 762 "parsing/parser.mly" +# 750 "parsing/parser.mly" (string * char option) # 173 "parsing/parser.ml" ) @@ -182,7 +182,7 @@ module MenhirBasics = struct | EFFECT | DOWNTO | DOTOP of ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) # 188 "parsing/parser.ml" ) @@ -190,14 +190,14 @@ module MenhirBasics = struct | DOT | DONE | DOCSTRING of ( -# 856 "parsing/parser.mly" +# 844 "parsing/parser.mly" (Docstrings.docstring) # 196 "parsing/parser.ml" ) | DO | CONSTRAINT | COMMENT of ( -# 855 "parsing/parser.mly" +# 843 "parsing/parser.mly" (string * Location.t) # 203 "parsing/parser.ml" ) @@ -208,7 +208,7 @@ module MenhirBasics = struct | COLON | CLASS | CHAR of ( -# 741 "parsing/parser.mly" +# 729 "parsing/parser.mly" (char) # 214 "parsing/parser.ml" ) @@ -221,7 +221,7 @@ module MenhirBasics = struct | ASSERT | AS | ANDOP of ( -# 780 "parsing/parser.mly" +# 768 "parsing/parser.mly" (string) # 227 "parsing/parser.ml" ) @@ -262,8 +262,8 @@ let ghost_loc (startpos, endpos) = { } let mktyp ~loc ?attrs d = Typ.mk ~loc:(make_loc loc) ?attrs d -let mkpat ~loc d = Pat.mk ~loc:(make_loc loc) d -let mkexp ~loc d = Exp.mk ~loc:(make_loc loc) d +let mkpat ~loc ?attrs d = Pat.mk ~loc:(make_loc loc) ?attrs d +let mkexp ~loc ?attrs d = Exp.mk ~loc:(make_loc loc) ?attrs d let mkmty ~loc ?attrs d = Mty.mk ~loc:(make_loc loc) ?attrs d let mksig ~loc d = Sig.mk ~loc:(make_loc loc) d let mkmod ~loc ?attrs d = Mod.mk ~loc:(make_loc loc) ?attrs d @@ -307,6 +307,8 @@ let mkcf ~loc ?attrs ?docs d = let mkrhs rhs loc = mkloc rhs (make_loc loc) let ghrhs rhs loc = mkloc rhs (ghost_loc loc) +let ldot lid lid_loc name loc = Ldot (mkrhs lid lid_loc, mkrhs name loc) + let push_loc x acc = if x.Location.loc_ghost then acc @@ -318,7 +320,7 @@ let reloc_pat ~loc x = let reloc_exp ~loc x = { x with pexp_loc = make_loc loc; pexp_loc_stack = push_loc x.pexp_loc x.pexp_loc_stack } -let reloc_typ ~loc x = +let _reloc_typ ~loc x = { x with ptyp_loc = make_loc loc; ptyp_loc_stack = push_loc x.ptyp_loc x.ptyp_loc_stack } @@ -332,25 +334,14 @@ let mkpatvar ~loc name = mkpat ~loc (Ppat_var (mkrhs name loc)) (* - Ghost expressions and patterns: - expressions and patterns that do not appear explicitly in the - source file they have the loc_ghost flag set to true. - Then the profiler will not try to instrument them and the - -annot option will not try to display their type. + See ./location.mli for when to use a ghost location or not. Every grammar rule that generates an element with a location must make at most one non-ghost element, the topmost one. - - How to tell whether your location must be ghost: - A location corresponds to a range of characters in the source file. - If the location contains a piece of code that is syntactically - valid (according to the documentation), and corresponds to the - AST node, then the location must be real; in all other cases, - it must be ghost. *) -let ghexp ~loc d = Exp.mk ~loc:(ghost_loc loc) d -let ghpat ~loc d = Pat.mk ~loc:(ghost_loc loc) d -let ghtyp ~loc d = Typ.mk ~loc:(ghost_loc loc) d +let ghexp ~loc ?attrs d = Exp.mk ~loc:(ghost_loc loc) ?attrs d +let ghpat ~loc ?attrs d = Pat.mk ~loc:(ghost_loc loc) ?attrs d +let ghtyp ~loc ?attrs d = Typ.mk ~loc:(ghost_loc loc) ?attrs d let ghloc ~loc d = { txt = d; loc = ghost_loc loc } let ghstr ~loc d = Str.mk ~loc:(ghost_loc loc) d let ghsig ~loc d = Sig.mk ~loc:(ghost_loc loc) d @@ -421,7 +412,9 @@ let rec mktailexp nilloc = let open Location in function | e1 :: el -> let exp_el, el_loc = mktailexp nilloc el in let loc = (e1.pexp_loc.loc_start, snd el_loc) in - let arg = ghexp ~loc (Pexp_tuple [e1; ghexp ~loc:el_loc exp_el]) in + let arg = + ghexp ~loc (Pexp_tuple [None, e1; None, ghexp ~loc:el_loc exp_el]) + in ghexp_cons_desc loc arg, loc let rec mktailpat nilloc = let open Location in function @@ -431,7 +424,10 @@ let rec mktailpat nilloc = let open Location in function | p1 :: pl -> let pat_pl, el_loc = mktailpat nilloc pl in let loc = (p1.ppat_loc.loc_start, snd el_loc) in - let arg = ghpat ~loc (Ppat_tuple [p1; ghpat ~loc:el_loc pat_pl]) in + let arg = + ghpat ~loc + (Ppat_tuple ([None, p1; None, ghpat ~loc:el_loc pat_pl], Closed)) + in ghpat_cons_desc loc arg, loc let mkstrexp e attrs = @@ -531,9 +527,12 @@ type ('dot,'index) array_family = { } -let bigarray_untuplify = function - { pexp_desc = Pexp_tuple explist; pexp_loc = _ } -> explist - | exp -> [exp] +let bigarray_untuplify exp = + match exp.pexp_desc with + | Pexp_tuple explist + when List.for_all (fun (l, _) -> Option.is_none l) explist -> + List.map snd explist + | _ -> [exp] let builtin_arraylike_name loc _ ~assign paren_kind n = let opname = if assign then "set" else "get" in @@ -549,8 +548,8 @@ let builtin_arraylike_name loc _ ~assign paren_kind n = | Two -> "Array2" | Three -> "Array3" | Many -> "Genarray" in - Ldot(Lident "Bigarray", submodule_name) in - ghloc ~loc (Ldot(prefix,opname)) + Ldot(mknoloc (Lident "Bigarray"), mknoloc submodule_name) in + ghloc ~loc (Ldot(mknoloc prefix, mknoloc opname)) let builtin_arraylike_index loc paren_kind index = match paren_kind with | Paren | Bracket -> One, [Nolabel, index] @@ -580,7 +579,7 @@ let user_indexing_operator_name loc (prefix,ext) ~assign paren_kind n = String.concat "" ["."; ext; left; mid; right; assign] in let lid = match prefix with | None -> Lident name - | Some p -> Ldot(p,name) in + | Some p -> Ldot(mknoloc p,mknoloc name) in ghloc ~loc lid let user_index loc _ index = @@ -609,9 +608,9 @@ let indexop_unclosed_error loc_s s loc_e = let left, right = paren_to_strings s in unclosed left loc_s right loc_e -let lapply ~loc p1 p2 = +let lapply ~loc p1 loc_p1 p2 loc_p2 = if !Clflags.applicative_functors - then Lapply(p1, p2) + then Lapply(mkrhs p1 loc_p1, mkrhs p2 loc_p2) else raise (Syntaxerr.Error( Syntaxerr.Applicative_path (make_loc loc))) @@ -649,33 +648,28 @@ let wrap_type_annotation ~loc newtypes core_type body = let exp = mk_newtypes newtypes exp in (exp, ghtyp(Ptyp_poly(newtypes, Typ.varify_constructors newtypes core_type))) -let wrap_exp_attrs ~loc body (ext, attrs) = - let ghexp = ghexp ~loc in +let pexp_extension ~id e = Pexp_extension (id, PStr [mkstrexp e []]) + +let mkexp_attrs ~loc desc (ext, attrs) = (* todo: keep exact location for the entire attribute *) - let body = {body with pexp_attributes = attrs @ body.pexp_attributes} in match ext with - | None -> body - | Some id -> ghexp(Pexp_extension (id, PStr [mkstrexp body []])) + | None -> mkexp ~loc ~attrs desc + | Some id -> + mkexp ~loc (pexp_extension ~id (ghexp ~loc ~attrs desc)) -let mkexp_attrs ~loc d attrs = - wrap_exp_attrs ~loc (mkexp ~loc d) attrs - -let wrap_typ_attrs ~loc typ (ext, attrs) = +let mktyp_attrs ~loc desc (ext, attrs) = (* todo: keep exact location for the entire attribute *) - let typ = {typ with ptyp_attributes = attrs @ typ.ptyp_attributes} in match ext with - | None -> typ - | Some id -> ghtyp ~loc (Ptyp_extension (id, PTyp typ)) + | None -> mktyp ~loc ~attrs desc + | Some id -> + mktyp ~loc (Ptyp_extension (id, PTyp (ghtyp ~loc ~attrs desc))) -let wrap_pat_attrs ~loc pat (ext, attrs) = +let mkpat_attrs ~loc desc (ext, attrs) = (* todo: keep exact location for the entire attribute *) - let pat = {pat with ppat_attributes = attrs @ pat.ppat_attributes} in match ext with - | None -> pat - | Some id -> ghpat ~loc (Ppat_extension (id, PPat (pat, None))) - -let mkpat_attrs ~loc d attrs = - wrap_pat_attrs ~loc (mkpat ~loc d) attrs + | None -> mkpat ~loc ~attrs desc + | Some id -> + mkpat ~loc (Ppat_extension (id, PPat (ghpat ~loc ~attrs desc, None))) let wrap_class_attrs ~loc:_ body attrs = {body with pcl_attributes = attrs @ body.pcl_attributes} @@ -684,21 +678,15 @@ let wrap_mod_attrs ~loc:_ attrs body = let wrap_mty_attrs ~loc:_ attrs body = {body with pmty_attributes = attrs @ body.pmty_attributes} -let wrap_str_ext ~loc body ext = - match ext with - | None -> body - | Some id -> ghstr ~loc (Pstr_extension ((id, PStr [body]), [])) - let wrap_mkstr_ext ~loc (item, ext) = - wrap_str_ext ~loc (mkstr ~loc item) ext - -let wrap_sig_ext ~loc body ext = match ext with - | None -> body - | Some id -> ghsig ~loc (Psig_extension ((id, PSig [body]), [])) + | None -> mkstr ~loc item + | Some id -> mkstr ~loc (Pstr_extension ((id, PStr [ghstr ~loc item]), [])) let wrap_mksig_ext ~loc (item, ext) = - wrap_sig_ext ~loc (mksig ~loc item) ext + match ext with + | None -> mksig ~loc item + | Some id -> mksig ~loc (Psig_extension ((id, PSig [ghsig ~loc item]), [])) let mk_quotedext ~loc (id, idloc, str, strloc, delim) = let exp_id = mkloc id idloc in @@ -927,7 +915,7 @@ let mk_directive ~loc name arg = } -# 931 "parsing/parser.ml" +# 919 "parsing/parser.ml" module Tables = struct @@ -1453,22 +1441,22 @@ module Tables = struct Obj.repr () and default_reduction = - (16, "\000\000\000\000\000\000\003L\003K\003J\003I\003H\003\027\003G\003F\003E\003D\003C\003B\003A\003@\003?\003>\003=\003<\003;\003:\0039\0038\0037\0036\0035\003\026\0034\0033\0032\0031\0030\003/\003.\003-\003,\003+\003*\003)\003(\003'\003&\003%\003$\003#\003\"\003!\003 \003\031\003\030\003\029\003\028\000\000\000\000\000\"\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\144\001\227\001\206\001\224\001\223\001\222\001\228\001\232\000\000\003\145\001\226\001\225\001\207\001\230\001\221\001\220\001\219\001\218\001\217\001\215\001\231\001\229\000\000\000\000\000\000\001\011\000\000\000\000\001\210\000\000\000\000\000\000\001\212\000\000\000\000\000\000\001\214\001\236\001\233\001\216\001\208\001\234\001\235\000\000\003\143\003\142\003\146\000\000\000\000\000 \001u\000\132\000\000\001\007\001\b\000\000\000\000\000\000\002\005\002\004\000\000\000\000\000\031\000\000\000\000\000\000\000\000\000\000\001\160\000\000\000\000\000\000\000\000\000\000\003\139\000\000\003\134\000\000\000\000\003\136\000\000\003\138\000\000\003\135\003\137\000\000\003\129\000\000\003\128\003|\002}\000\000\003\127\000\000\002~\000\000\000\000\000\000\000\000\000c\000\000\000\000\000a\000\000\000\000\001s\000\000\000\000\000\000\000\000\000\000\000\237\001\129\000\000\000\000\000\000\000\000\000\000\000\000\002f\000\000\000\000\000\000\000\000\000\000\000\000\000^\000\000\000\000\000\000\000\000\000\000\003\b\000\000\002\182\002\183\000\000\002\180\002\181\000\000\000\000\000\000\000\000\000\000\001\155\001\154\000\000\003\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\000\017\000\016\000\000\000\000\000\000\000\000\000\000\001\146\000\000\000\000\000\000\000\000\000\000\000\000\001\127\000\000\000\000\001\130\001\128\001\136\000:\002\217\000\000\001E\003d\003c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`\000\000\001\022\000\000\002\185\002\184\000\000\000\000\000\000\001\240\000\000\000\000\000|\000\000\000\000\000\000\000\000\000\000\001\135\000\000\001\134\000\000\001v\001\133\000\000\001t\000[\000\027\000\000\000\000\001\181\000\024\000\000\000\000\000\000\000\000\000s\000\000\000\000\000\000\000\000\000\000\000\000\003{\000\246\000t\000\135\000u\000\023\000\000\000\000\000\000\000\000\000\028\000\025\000\018\000\000\000v\000r\000\000\000\000\000\000\000\019\000\030\000\000\000\248\002\139\002y\000\000\000y\000\000\002z\000\000\000\000\001\237\000\000\000\000\000\000\000\000\003e\000\000\003f\000\000\000\000\000x\000\000\000\000\000\000\000z\000\000\000{\000\000\000}\000\000\000\000\000~\002o\002n\000\000\000\000\000\000\000\000\000\000\000\000\000\\\000\000\003\r\000_\000b\000]\003\002\003\147\003\003\0028\003\005\000\000\000\000\003\n\002\179\003\012\000\000\000\000\000\000\003\019\003\016\000\000\000\000\000\000\000\000\0024\000\000\000\000\002-\003\025\003\011\000j\000\000\002%\000\000\000\000\000\000\000\000\002)\000\000\002$\000\000\000\000\000\000\000\000\001\183\000\000\000\000\0026\000\000\000\000\000i\000\000\003\020\003\004\000\000\0020\000\000\000\000\003\023\000\000\003\022\003\021\000\000\002+\000\000\000\000\002'\002&\0025\0027\002,\000\000\000h\000\000\003\018\003\017\000\000\003\015\000\000\002\187\002\186\000\000\000\000\002\152\003\014\000\000\000\000\000\000\000\000\001\242\001`\001a\002\189\000\000\002\190\002\188\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\001\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\167\000\000\000\000\000\000\000\000\000\000\000\000\003\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003~\000\000\000\000\000\000\000\000\000\000\001\166\000\000\000\000\000\000\001~\001\173\001}\002j\001\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002w\000\000\000\000\002x\002k\000\000\000\000\001\165\001\164\000\000\000\250\000\000\000\000\001\148\000\000\000\000\001\152\000\000\002\t\002\b\000\000\000\000\002\007\002\006\001\151\001\149\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\223\001\131\002\228\002\226\000\000\000\000\000\000\002\239\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\001\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002C\000\000\000\000\000\000\000\000\000\000\000\000\001\031\002B\001 \000\000\000\000\000\000\000\238\000\000\001#\001$\000\000\000\239\002i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002t\002r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\207\000\000\000\000\000\000\000\000\000\000\003x\000\000\000\000\003w\000\000\000\000\000\000\000\000\001\026\001\025\000\000\001\027\000\000\000\000\000\000\002\236\000\000\000\000\000\000\002\203\002\194\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\148\002\238\002\225\002\224\000\000\000\000\000\210\002\156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\236\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\208\000\000\000\000\000\000\000\244\000\243\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003O\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\002q\000\000\000\000\000\000\001)\000\000\000\000\001(\001'\000\000\002\003\000\000\000\000\000\140\003P\002h\000\000\000\000\000\000\000\000\001,\000\000\000\000\001+\000\000\0023\000\000\000\000\002?\000\000\000\000\002A\000\000\000\000\002=\002<\002:\002;\000\000\000\000\000\000\001%\000\000\000\000\001K\000\020\001.\000\000\000\000\000\000\002\205\002\196\000\000\000\000\002\204\002\195\000\000\000\000\000\000\000\000\002\207\002\198\000\000\000\000\002\145\000\000\000\000\002\211\002\202\000\000\000\000\002\209\002\200\002\232\000\000\000\000\000\000\000\000\000\000\002\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\208\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002m\002l\000\206\002\146\000\000\002\197\000\000\000\000\002\201\000\000\000\000\002\199\000\000\000\127\000\128\000\000\000\000\000\000\000\000\000\159\000\158\000\000\000\146\000\000\000\000\001c\000\000\001d\001b\002s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0016\000\000\000\000\0017\000\000\000\000\000\211\000\000\0019\0018\000\000\000\000\002\240\002\233\000\000\002\249\000\000\002\250\002\248\000\000\002\254\000\000\002\255\002\253\000\000\000\000\002\235\002\234\000\000\000\000\000\000\002Y\000\000\000\000\000\000\000\000\002\155\002X\000\000\002\244\002\243\000\000\000\000\000\000\001\132\000\000\002\215\000\000\002\216\002\214\000\000\002\242\002\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\149\002\231\000\000\002\230\002\229\000\000\002\252\002\251\000\145\000\000\000\000\000\000\000\000\000\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\138\000\000\000\000\000\000\000\000\000\000\000\142\000\000\001\140\000\000\000\000\000\000\000d\000\000\000\000\000e\000\000\000\000\000\000\000\000\001\175\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\000\000\000\000\000n\000\000\001\019\001\017\000\000\000\000\000\000\000\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\143\000f\000\000\000\000\002W\000\000\000\000\001-\002\001\000\000\001\029\001\030\0014\000\000\000\000\000\000\000\000\000\000\002\247\000\000\002\246\002\245\002\227\000\000\000\000\000\000\000\000\002\218\000\000\002\220\000\000\002\219\000\000\002\192\002\191\000\000\002\193\000\000\000\000\000\000\000\000\002\213\002\212\000\000\000\000\000\000\000\000\002\023\002\011\000\000\002\021\000\000\002\017\000\000\002\019\000\000\002\r\000\000\000\000\002\015\000\000\002\022\002\n\000\000\002\020\000\000\002\016\000\000\002\018\000\000\002\012\000\000\000\000\002\014\000\000\001\203\000\000\000\000\000\000\001\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\171\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001A\003]\000\000\000\000\003\\\000\000\000\000\000\000\000\000\000\000\002H\000\000\000\000\000\000\000\000\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\185\000\000\002N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003N\000\000\000\000\002\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\205\000\000\000\000\000\000\001\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\172\000\000\000\000\000\000\000\000\001\157\000\000\001\156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001C\002\172\000\000\000\000\001\142\000\000\002\170\000\000\000\000\000\000\002\169\000\000\000\000\001\143\000\000\000\000\000\000\000\000\002\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\156\000\000\000\000\000\000\000\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000>\000\000\000\000\000\000\000\000\001\180\000\000\001\179\000\000\000\000\000\000\000\000\000A\000\000\000\000\000\000\002U\000\000\002T\000\000\000\000\000\000\000\000\000B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000G\000\000\000\000\000\000\000H\000F\000\000\000K\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000C\000\000\000J\000I\000\000\000D\000E\000\000\001T\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001?\000Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000W\000\000\000Y\000X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001=\002\177\002\162\000\000\002\168\002\163\002\175\002\174\002\173\002\171\001N\000\000\002\160\000\000\000\000\000\000\000\000\000\000\002f\000\000\000\000\001G\002\164\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\196\001\192\000\000\000\000\000\000\001\001\000\000\000\000\002\\\002f\000\000\000\000\001I\002Z\002[\000\000\000\000\000\000\000\000\000\000\001\199\001\195\001\191\000\000\000\000\001\002\000\000\000\000\001\198\001\194\001\190\001\188\002\165\002\161\002\178\001M\002E\002\159\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\151\000\000\000\000\003\153\000\000\000/\000\000\000\000\003\159\000\000\003\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\150\000\000\000\000\003\152\000\000\000\000\000\000\002P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001r\000\000\000\000\001p\001n\000\000\0000\000\000\000\000\003\162\000\000\003\161\000\000\000\000\000\000\001l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001q\000\000\000\000\001o\001m\000\000\000\000\000\000\0002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Q\000\000\000\000\000\000\000\000\000\000\000\000\000,\000\000\000\000\000P\000\000\000*\0011\000\000\0009\000&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001/\000\000\000O\000N\000\000\000\000\000T\000S\000\000\000\000\001\244\000\000\000.\000\000\000\000\000\000\000-\000\000\000\000\000\000\0001\000\000\000R\000U\000\000\0003\0004\000\000\001V\000\000\000\000\000\000\000\000\000\000\000\000\0007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001;\003`\003W\000\000\000\000\003[\003M\003V\003_\003^\001R\000\000\000\000\003T\000\000\003X\003U\003a\002D\000\000\000\000\003R\000#\003Q\000\000\000\000\000\136\000\000\001\r\000\000\000\000\001Q\001P\000\000\001\145\001\144\000\000\000\000\003\024\003\007\000\000\000;\000\000\000\000\000<\000\000\000\000\002\222\002\221\000\000\000\000\000\149\000\000\000\000\002M\001\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\000\000\003Z\002a\002b\002]\002_\002^\002`\000\000\000\000\000\000\000\134\000\000\000\000\002f\000\000\001\005\000\000\000\000\000\000\000\000\003Y\000\000\000\131\000\000\000\000\000\000\000\000\001k\001e\000\000\000\000\001f\001\201\000\000\001\200\000\000\000\000\000\247\000\000\000\000\000\000\000\029\000\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\197\001\193\000\000\001\189\003z\000\000\002f\000\000\001\004\000\000\000\000\000\000\000\000\002\167\002e\002c\002d\000\000\000\000\000\000\002f\000\000\001\003\000\000\000\000\000\000\000\000\002\166\000\000\001\159\001\158\000\000\000w\000\000\003\154\000\000\000$\000\000\000\000\000\000\000\000\000\157\000\156\000\000\001\t\000\001\000\000\000\000\001\012\000\002\000\000\000\000\000\000\001x\001y\000\003\000\000\000\000\000\000\000\000\001{\001|\001z\000\021\001w\000\022\000\000\002\024\000\000\000\004\000\000\002\025\000\000\000\005\000\000\002\026\000\000\000\000\002\027\000\006\000\000\000\007\000\000\002\028\000\000\000\b\000\000\002\029\000\000\000\t\000\000\002\030\000\000\000\n\000\000\002\031\000\000\000\011\000\000\002 \000\000\000\000\002!\000\012\000\000\000\000\002\"\000\r\000\000\000\000\000\000\000\000\000\000\003m\003h\003i\003l\003j\000\000\003q\000\014\000\000\003p\000\000\001X\000\000\000\000\003n\000\000\003o\000\000\000\000\000\000\000\000\001\\\001]\000\000\000\000\001[\001Z\000\015\000\000\000\000\000\000\003\141\000\000\003\140") + (16, "\000\000\000\000\000\000\003\155\003\154\003\153\003\152\003\151\003i\003\150\003\149\003\148\003\147\003\146\003\145\003\144\003\143\003\142\003\141\003\140\003\139\003\138\003\137\003\136\003\135\003\134\003\133\003\132\003h\003\131\003\130\003\129\003\128\003\127\003~\003}\003|\003{\003z\003y\003x\003w\003v\003u\003t\003s\003r\003q\003p\003o\003n\003m\003l\003k\003j\000\000\000\000\000\"\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\223\002\017\001\252\002\014\002\r\002\012\002\018\002\022\000\000\003\224\002\016\002\015\001\253\002\020\002\011\002\n\002\t\002\b\002\007\002\005\002\021\002\019\000\000\000\000\000\000\001\r\000\000\000\000\002\000\000\000\000\000\000\000\002\002\000\000\000\000\000\000\002\004\002\026\002\023\002\006\001\254\002\024\002\025\000\000\003\222\003\221\003\225\000\000\000\000\000 \001\163\000\132\000\000\001\t\001\n\000\000\000\000\000\000\0023\0022\000\000\000\000\000\031\000\000\000\000\000\000\000\000\000\000\001\206\000\000\000\000\000\000\000\000\000\000\003\218\000\000\003\213\000\000\000\000\003\215\000\000\003\217\000\000\003\214\003\216\000\000\003\208\000\000\003\207\003\203\002\207\000\000\003\206\000\000\002\208\000\000\000\000\000\000\000\000\000c\000\000\000\000\000a\000\000\000\000\001\161\000\000\000\000\000\000\000\000\000\000\000\237\001\175\000\000\000\000\000\000\000\000\000\000\000\000\002\184\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\199\000\000\002\030\000\000\000\000\000|\000\000\000\000\000\000\000\000\000\000\001\181\000\000\001\180\000\000\001\164\001\179\000\000\001\162\000[\000\027\000\000\000\000\001\227\000\024\000\000\000\000\000\000\000\000\000\000\000s\000\000\000\000\000\000\003\202\000\018\000t\000\135\000u\000\023\000\000\000v\000r\000\000\000\000\000\000\000\000\000\000\000\000\000\028\000\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\000\030\000\246\000\248\002\217\002\203\000\000\000y\000\000\002\204\000\000\000\000\002\027\000\000\000\000\000\000\000\000\003\180\000\000\001s\000\000\003\181\000\000\000\000\000x\000\000\000\000\000\000\000z\000\000\000{\000\000\000}\000\000\000\000\000~\002\193\002\192\000\000\000\000\003\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\171\002\170\000^\000\000\000\000\000\000\000\000\000\000\003V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001:\0019\000\000\003\004\003\005\000\000\003\002\003\003\000\000\000\000\000\000\000\000\000\000\001\201\001\200\000\000\003T\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\000\017\000\016\000\000\000\000\000\000\000\000\000\000\001\192\000\000\000\000\000\000\000\000\000\000\000\000\001\173\000\000\000\000\001\176\001\174\001\182\000:\003'\003\179\003\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001O\001N\000\000\000\000\000`\000\000\001\024\000\000\003\007\003\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\\\000\000\003[\000_\000b\000]\003P\003\226\003Q\002`\003S\000\000\000\000\003X\003\001\003Z\000\000\000\000\000\000\003a\003^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\0011\000\000\0010\003g\003Y\000j\000\000\000\000\000\000\000\000\002\\\000\000\000\000\002[\000\000\001Q\002S\002_\002R\002V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\001)\000\000\001(\002\173\000\000\000\000\002W\000\000\000\000\000\000\000\000\000\000\001\229\000\000\000\000\002^\000\000\000\000\000i\000\000\003b\003R\000\000\001;\000\000\000\000\000\000\000\000\000\000\001.\001-\000\000\001,\002\174\000\000\000\000\003e\000\000\003d\003c\000\000\002Y\000\000\000\000\002U\002T\002]\002Z\002\175\000\000\000\000\000h\000\000\003`\003_\000\000\003]\000\000\003\t\003\b\000\000\000\000\002\230\003\\\000\000\000\000\000\000\000\000\002 \001\142\001\143\003\011\000\000\003\012\003\n\000\000\001M\002\183\001R\000\000\000\000\002g\000\000\002b\002c\002f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001?\001>\000\000\001=\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001K\001J\000\000\001I\002\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001G\001F\000\000\001E\002\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001#\001$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\251\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\213\000\000\000\000\000\000\000\000\000\000\000\000\003\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\205\000\000\000\000\000\000\000\000\000\000\001\212\000\000\000\000\000\000\001\172\001\219\001\171\002\188\001\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\201\000\000\000\000\002\202\002\189\000\000\000\000\001\211\001\210\000\000\000\252\000\000\000\000\001\194\000\000\000\000\001\198\000\000\0027\0026\000\000\000\000\0025\0024\001\197\001\195\000\000\001\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003-\001\177\0032\0030\000\000\000\000\000\000\003=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003O\000\000\003N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002k\000\000\000\000\000\000\000\000\000\000\000\000\001!\002j\001\"\000\000\000\000\000\000\000\238\000\000\001%\001&\000\000\000\239\002\187\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\156\002\155\000\000\000\000\000\000\003:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\227\003<\003/\003.\000\000\000\000\000\000\000\000\000\207\002\196\000\000\000\000\000\000\000\000\000\000\001\028\001\027\000\000\001\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\224\000\000\000\000\000\000\000\000\000\000\000\000\002\146\002\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\000\000\000\000\000\000\000\000\000\210\002\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\236\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\208\000\000\000\000\000\000\000\244\000\243\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\151\002\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\158\000\000\000\000\000\000\000\000\000\000\000\000\001X\000\000\000\000\002\195\000\000\000\000\000\000\001W\000\000\000\000\001V\001U\000\000\0021\000\000\000\000\000\140\003\159\002\186\000\000\000\000\000\000\000\000\001Z\000\000\000\000\001Y\000\000\001P\000\000\000\000\000\000\000\000\000\000\001C\001B\000\000\001A\002\180\000\000\000\000\002i\000\000\000\000\002e\002d\001S\000\000\000\000\001y\000\020\001\\\000\000\000\000\000\000\002\223\000\000\003\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\191\002\190\000\206\000\000\000\127\000\128\000\000\000\000\000\000\000\000\000\159\000\158\000\000\003\016\000\000\000\000\003\018\000\000\000\000\003\017\000\000\000\000\000\000\000\000\003\020\000\000\000\000\003\024\000\000\000\000\003\022\0036\000\000\000\000\000\000\000\000\000\000\000\146\000\000\000\000\001\145\000\000\001\146\001\144\002\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\019\000\000\000\000\003\023\000\000\000\000\003\021\000\000\000\000\000\000\000\000\000\000\002\161\002\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001d\000\000\000\000\001e\000\000\000\000\000\211\000\000\001g\001f\000\000\000\000\003>\0037\000\000\003G\000\000\003H\003F\000\000\003L\000\000\003M\003K\000\000\000\000\0039\0038\000\000\000\000\000\000\002\129\000\000\000\000\000\000\000\000\002\233\002\128\000\000\003B\003A\000\000\000\000\000\000\001\178\000\000\003%\000\000\003&\003$\000\000\003@\003?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\227\0035\000\000\0034\0033\000\000\003J\003I\000\145\000\000\000\000\000\000\000\000\000\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\184\000\000\000\000\000\000\000\000\000\000\000\142\000\000\001\186\000\000\000\000\000\000\000d\000\000\000\000\000e\000\000\000\000\000\000\000\000\001\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\018\000\000\000\000\000n\000\000\001\021\001\019\000\000\000\000\000\000\000\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\143\000f\000\000\000\000\002\127\000\000\000\000\001[\002/\000\000\001\031\001 \001b\000\000\000\000\000\000\000\000\000\000\003E\000\000\003D\003C\0031\000\000\000\000\000\000\000\000\003(\000\000\003*\000\000\003)\000\000\003\014\003\r\000\000\003\015\000\000\000\000\000\000\000\000\003#\003\"\000\000\000\000\000\000\000\000\002E\0029\000\000\002C\000\000\002?\000\000\002A\000\000\002;\000\000\000\000\002=\000\000\002D\0028\000\000\002B\000\000\002>\000\000\002@\000\000\002:\000\000\000\000\002<\000\000\001\249\000\000\000\000\000\000\001\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001o\003\172\000\000\000\000\003\171\000\000\000\000\000\000\000\000\000\000\002p\000\000\000\000\000\000\000\000\000\000\000\000\003\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\231\000\000\002v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\157\000\000\000\000\002\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\000\000\001\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\000\000\000\000\000\000\001\203\000\000\001\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001q\002\250\000\000\000\000\001\188\000\000\002\248\000\000\000\000\000\000\002\247\000\000\000\000\001\189\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\235\000\000\000\000\000\000\000\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000>\000\000\000\000\000\000\000\000\001\226\000\000\001\225\000\000\000\000\000\000\000\000\000A\000\000\000\000\000\000\002}\000\000\002|\000\000\000\000\000\000\000\000\000B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000G\000\000\000\000\000\000\000H\000F\000\000\000K\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000C\000\000\000J\000I\000\000\000D\000E\000\000\001\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001m\000Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000W\000\000\000Y\000X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001k\002\255\002\240\000\000\002\246\002\241\002\253\002\252\002\251\002\249\001|\000\000\002\238\000\000\000\000\000\000\000\000\000\000\002\184\000\000\000\000\001u\002\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\242\001\238\000\000\000\000\000\000\001\003\000\000\000\000\002\132\002\184\000\000\000\000\001w\002\130\002\131\000\000\000\000\000\000\000\000\000\000\001\245\001\241\001\237\000\000\000\000\001\004\000\000\000\000\001\244\001\240\001\236\001\234\002\243\002\239\003\000\001{\002m\002\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\230\000\000\000\000\003\232\000\000\000/\000\000\000\000\003\238\000\000\003\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\229\000\000\000\000\003\231\000\000\000\000\000\000\002x\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\160\000\000\000\000\001\158\001\156\000\000\0000\000\000\000\000\003\241\000\000\003\240\000\000\000\000\000\000\001\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\159\000\000\000\000\001\157\001\155\000\000\000\000\000\000\0002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Q\000\000\000\000\000\000\000\000\000\000\000\000\000,\000\000\000\000\000P\000\000\000*\001_\000\000\0009\000&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001]\000\000\000O\000N\000\000\000\000\000T\000S\000\000\000\000\002\"\000\000\000.\000\000\000\000\000\000\000-\000\000\000\000\000\000\0001\000\000\000R\000U\000\000\0003\0004\000\000\001\132\000\000\000\000\000\000\000\000\000\000\000\000\0007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001i\003\175\003\166\000\000\000\000\003\170\003\156\003\165\003\174\003\173\001\128\000\000\000\000\003\163\000\000\003\167\003\164\003\176\002l\000\000\000\000\003\161\000#\003\160\000\000\000\000\000\136\000\000\001\015\000\000\000\000\001\127\001~\000\000\001\191\001\190\000\000\000\000\003f\003U\000\000\0018\002\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0016\0015\000\000\0014\002\176\000\000\000\000\000;\000\000\000\000\000<\000\000\000\000\003,\003+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\166\002\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\149\000\000\000\000\002u\001\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\000\000\003\169\002\137\002\138\002\133\002\135\002\134\002\136\000\000\000\000\000\000\000\134\000\000\000\000\002\184\000\000\001\007\000\000\000\000\000\000\000\000\003\168\000\000\000\131\000\000\000\000\000\000\000\000\001\153\001\147\000\000\000\000\001\148\001\247\000\000\001\246\000\000\000\000\000\247\000\000\000\000\000\000\000\000\000\249\000\000\000\000\000\000\000\029\000\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\243\001\239\000\000\001\235\003\201\000\000\002\184\000\000\001\006\000\000\000\000\000\000\000\000\002\245\002\141\002\139\002\140\000\000\000\000\000\000\002\184\000\000\001\005\000\000\000\000\000\000\000\000\002\244\000\000\001\205\001\204\000\000\000w\000\000\003\233\000\000\000$\000\000\000\000\000\000\000\000\000\157\000\156\000\000\001\011\000\001\000\000\000\000\001\014\000\002\000\000\000\000\000\000\001\166\001\167\000\003\000\000\000\000\000\000\000\000\001\169\001\170\001\168\000\021\001\165\000\022\000\000\002F\000\000\000\004\000\000\002G\000\000\000\005\000\000\002H\000\000\000\000\002I\000\006\000\000\000\007\000\000\002J\000\000\000\b\000\000\002K\000\000\000\t\000\000\002L\000\000\000\n\000\000\002M\000\000\000\011\000\000\002N\000\000\000\000\002O\000\012\000\000\000\000\002P\000\r\000\000\000\000\000\000\000\000\000\000\003\188\003\183\003\184\003\187\003\185\000\000\003\192\000\014\000\000\003\191\000\000\001\134\000\000\000\000\003\189\000\000\003\190\000\000\000\000\000\000\000\000\001\138\001\139\000\000\000\000\001\137\001\136\000\015\000\000\000\000\000\000\003\220\000\000\003\219") and error = - (128, "'\225 \197\138\173\190fz\002\129\252\128\0008\224#a\000E\194\141\190$\250\000\129\240\000\000\024\224}\246D\b/\226*\000\t\131\131\220h\176(4\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\175\235f\245\155\175\190f\255\146\163\252Q\016y\224}\246D\b/\226*\000\t\131\131\220h\176(4\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$\250\000\129\240\000\000\024\224}\246D\b/\226*\000\t\131\131\220h\176(4'\225\"\213\138\173\190fz\002\129\252\000\000x\224\000\000\000\000@\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\128\000\128\007\224,\004\128\000|D\002\004\001\002\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\128\179\160\b2\nC\129\131$\014\193\018!\020\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@@ \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\018C\128\002 \014\193\003 \004\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128 \128\b \000B\128\002\000\012@\000 \000\132\128 \128\b \000B\000\002\000\012@\000 \000\003\000\000$\193\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \128\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \000C\000\002\000\014\192\017 \004\003 \000x\016\000\024\184P\000 \016\002\000\001\000\132\128\"\128\012 \018C\128\002 \012\193\016a\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003 \000p\016\000\024\184P\000 \016\002\000\001\000\003\000\bp\016 \024\184@\000 \000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2\nC\129\130$\014\192\022a\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000$\000\002\000\000\000\001\000\016\000\000\000\b\000\000\000$\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000}\246D\b/\226*\000\t\131\131\220h\176(4'\225\"\213\138\173\190fz\002\129\252\000\000x\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000$\193\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\000\016\000\000\000\000\000\128\003\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \002C\000\002 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\016 \004}\246D\b/\226*\000\t\131\131\220h\176(4'\225\"\213\138\173\190fz\002\129\252\000\000x\224#a\000E\194\141\190$\250\000\129\240\000\000\024\224#a\000E\130\141\190$\250\000\129\240\000\000\024\224#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\132\000\000\128@\002\016B\129\128\000\000@\016\000\000\132\000\000\128\000\002\016B\129\128\000\000@\016\000\000\132\000\000\128\000\002\016B\001\128\000\000@\016\000\000\003!\000@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131!\136G\224,\028\164Z|d6\020\001\146\203\128\000\b\000\000\000\000\000\002\000\000 \000\000\000\000\131\000\000\000@\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\167\225 \197\138\173\190f\250\002\129\252@\0008\224\167\225 \197\138\173\190fz\002\129\252@\0008\224\167\225\"\197\138\173\190fz\002\129\252\192\0008\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@@\000\016 \128\000\002\000\000\000\000\128\001\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\002@@\000\000\016 \000\000\002\000\000\000\000\000#a\000E\130\141\190$\250\000\129\240\000\000\024\224#a\000E\130\141\190$z\000\129\240\000\000\024\224\001\000\000\000@\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\175\235w\253\155\239\190\255\255\147\167\252\210\0169\228\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192#a\000E\130\141\190$z\000\129\240\000\000\024\224#a\000E\194\141\190$\250\000\129\240\000\000\024\224#a\000E\130\141\190$\250\000\129\240\000\000\024\224#a\000E\130\141\190$z\000\129\240\000\000\024\224\163a\136G\226\173\190\164z|\197\242\004\001\154\235\129!\bD\002\129\152$r\000\0000\000\000\024\192#a\000E\130\141\190$z\000\129\240\000\000\028\224\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\128\004\024$Z\000 0\000\000\016@\003!\000@\128\004\024$Z\000 4\016\000\020@\003!\002@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\002\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\003\000\002p\016\000\024\184@\000 \000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\003\000\000p\016\000\024\184@\000 \000\000\000\001@\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\016\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128;\128\b2\002C\129\130$\014\192\022!\022\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128\187\128\b2\002C\129\130$\014\192\022!\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\024\024@\000\000\000\000\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2\nC\129\130$\014\192\022!\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\130$\014\192\022!\022\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128;\128\b2\002C\129\130$\014\192\022!\020\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2\nC\129\130$\014\192\022!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\004\000\000\000\128\000\004\000\000\000\001\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\002\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\004\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\128\000\000\002\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\002\000\000\000\000\003!\000@\128\004\024$Z\000 4\016\000\016@\003!\000@\192\004\024$\210\000 0\000\000\016@\003!\000@\128\004\024$\210\000 0\000\000\016@\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027P\144\020\024$\214\000 2\130\006\213P\000\001\000\000\128\004\000\000\002\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027P\144\020\024$\222\000 6\145\006\213P\001\000\000\000\000\000\016\004P\000\000\000\000\000\000\000\131!\b@\128\004\024$Z\000 4\016\000\144@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\192\004\024$\218\000 4\016\000\016@\003!\000@\128\004\024$\218\000 4\016\000\016@\003!\000@\128\004\024$Z\000 4\016\000\016@\003!\000@\128\004\024$Z\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147!\027@\128\020\024$\218\000 6\144\004\213P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\003!\000@\128\004\024$Z\000 4\016\000\016@\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\131!\000@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147!\027@\128\020\024$\218\000 6\144\004\213P\131\161\136G\224,\028\164Z|d6\020\001\146\203\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\b\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\004\193\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131!\000@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131!\000@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\128\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\002@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\018\000\000\000\000\000\128\000\000\000\000\004\133\016\131!\002@\128\004\024$Z\000 4\016\000\020@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\128\000\000\000\000\004\129\016\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\131\000\001\000\000\000\b\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$\214\001 2\000\004\209X\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\002\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\004@\200$\024$\218\000 4\000\000\016@\001\002@@@\000\016 \128\000\002\000\000\000\000\128\001\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\003\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\003\002H@\000 \024 \000\000\002\000\000\000\000\000\192\000\b\000\000\016\016\000\128\000\000\000\001\000@\000\000\000\000\000\000\000\016\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \004\000\128\000\000\000 \000\000\000\000\000\000\000\000\000\000\003\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\001\000\000\003\000\000x\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \020\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\018 \020\196\128*\128\b0\002C\128\002 \014\192\018 \004\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\018 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\001\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\002 \014\193\003 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \004\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \004\000\000\000\000\000\000\000\000\000\000\000\002\001\001\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\002 \014\193\002 \004\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\002 \014\193\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \004\000\128\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \004\192\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\192\002`\004\005\002H@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\016\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\192\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\193\002`\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\128\001\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224#a\002E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\b\000\000\000\b\000\000\000\000\000\128\000\016\000\000\000\000\000\000\000\b\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\001!\000D\002\129\152$r\000\0000\000\000\024\192\192\000\017\000\000\000\000\000\000\000`\002\005\002@\000#a\000E\194\141\190$\250\000\129\240@\000\024\224#a\000E\130\141\190$\250\000\129\240@\000\024\224#a\000E\130\141\190$z\000\129\240@\000\024\224\001!\000DB\129\152$\242\000\0000\000\000\024\192\001!\000D\002\129\152$\242\000\0000\000\000\024\192\001!\000D\002\129\152$r\000\0000\000\000\024\192\001!\000D\002\129\152$r\000\0000\000\000\024\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\001\000\000\000\000\000\024\004p\000\000\000\000\000\000\000\163a\136G\226\173\190\164z|\197\242\004\001\154\235\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163a\bE\130\141\190$z\000\129\240\000\000\024\224\163a\bE\130\141\190$z\000\129\240\000\000\024\224\129\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\000\000@\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163a\bE\130\141\190$z\000\129\240\000\000\024\224\163a\bE\130\141\190$z\000\129\240\000\000\024\224\131!\b@\128\004\024$Z\000 0\000\000\016@\000\000\000\000\000\000\000\000\128\000\000\002\000\004\193\016\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224#a\000E\194\141\190$\250\000\129\240\000\000\024\224#a\000E\130\141\190$\250\000\129\240\000\000\024\224#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\016@\016\000\000\000\000\016\000\000\128\000\000\000\000\004\129\016#a\000E\130\141\190$z\000\129\240\000\000\024\224\003)\000P\208\004\024$\214\000 0\000\000\016@\003)\000P\144\004\024$\214\000 0\000\000\016@\003)\000P\144\004\024$V\000 0\000\000\016@\002\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$Z\000 4\016\000\016@\000\000\b\000\000\000\000\000\128\000\000\002\000\004\193\016\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\161\136G\224,\028\164Z|d6\020\001\146\203\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\020\024$V\000 2\000\002P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000@\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\001\000\000\000\000\016\b\000\000\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\003!\000@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\192\004\024$\218\000 4\016\000\016@\003!\000@\128\004\024$\218\000 4\016\000\016@\003!\000@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016#a\000E\130\141\190$z\000\129\240\000\000\024\224\001!\000DB\129\152$\242\000\0000\000\000\024\192\001!\000D\002\129\152$\242\000\0000\000\000\024\192\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\001!\000D\002\129\152$r\000\0000\000\000\024\192\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\128\000\027\000\000\000\000\000\000\000\000\000\000\004\005\000\163a\011E\130\141\190$z\000\129\240\000\000\028\224#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\218\231\247\255l>\237\183\255\207\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\025\000\000\000\000\000\128\000\000\002\000\000\000\000\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\025\000\000\000\000\000\128\000\000\002\000\002\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\128\000\025\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\024\000P\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\197\189\187\215\250\191\218\231\247\255l>\237\183\255\207\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\004#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\218\231\247\255l>\237\183\255\207\196\148\187\131\232>B\195\129\255l\014\237\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\231\245\187\199\234\191\254\231\251\255\173\254\232\183\255\239}\246D\b/\226*\000\t\131\131\220h\176(4#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\003!\000@\128\004\024$\218\000 0\000\000\016@\003!\000@\128\004\024$Z\000 0\000\000\016@\135\169\"\208\152$\026g\214\003 >\192\006\241T#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\128\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\193\016\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131!\000@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\131!\000@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\131!\000@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\128\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\003!\000@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \004\132\128\"\128\b\"\002C\001\131 \012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\155\003\224\012\000\128\128|\004\002\000\005\134\003\163a\011E\130\141\190$z\000\129\240\000\000\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\001\000\000\000\000\000\024\000P\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\197\189\187\215\250\191\218\231\247\255,>\232\183\255\207\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\001\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#a\000E\130\141\190$z\000\129\240\000\000\024\224\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$Z\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129!\bD\002\129\152$r\000\0000\000\000\024\192\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\002E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192@\000\000\000\000\000\000\000\000\000`\000\005\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\002\000\002@\000\128\000\017\000\000\000\000\000\000\000\000\002\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\001\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000`\000\005\000\000\000\001\000\000\000\000\000\024\004p\000\000\000\000\000\000\000\192\000\017\000\000\000\000\000\000\000`\002\005\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\128\000\017\000\000\000\000\000\000\000\b\000\000\004\001\000\128\000\145\003\224\012\000\128\128|\012\002\000\005\130\003\128\000\016\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\b\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\016\000\128\001\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000@\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\003 \012\192\000 \004\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\016\000\000\128\000\000\002\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000@\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\128\001\000\000\000\000@\000\003\000\000`\000\000\024\184P\000 \000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\017\000\000\000\000\000\128\000\004\000\000\000\000\016\000\000\017\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\b\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\128\000\004\000\000\000\000\016\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\133\128\162\128\b0\nC\128\003 \012\192\016!\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\128\162\128\b \nC\128\003 \012\192\016!\004\003\000\000`\000\000\024\184P\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000`\000\000\024\184P\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\133\128\"\128\b \nC\128\003 \012\192\016!\004\133\128\162\128\b0\nC\128\003 \012\192\016!\004\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\133\128\"\128\b \nC\128\003 \012\192\016!\004\133\128\162\128\b0\nC\128\003 \012\192\016!\004\000\000\000\000\000\000\000\000\128\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\004@\128\004\024$\218\000 0\000\000\016@\003!\004@\128\004\024$Z\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$Z\000 0\000\000\016@\132\128\"\128\b \002C\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\b\000\000\000\016\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$Z\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\192\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$\218\000 4\016\000\017@\003!\000@\128\004\024$Z\000 4\016\000\017@\128\000\b\000\000\000\000\000\000\000\000\000\000\006A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\136\003\224\012\000\128\128|\004\002\000\007\194\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \018C\128\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\128\004\000@\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000@\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \014\192\000 \000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\002C\128\002 \012\192\000 \000\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\132\128\"\128\b \002C\000\002 \012\192\000 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\132\128\"\128\b \002C\000\002 \012\192\000 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\246D\b/\226*\000\t\131\131\220h\176(4'\225\"\213\138\173\190fz\002\129\252\000\000x\224\003!\000@\128\004\024$Z\000 4\016\000\016@\016\000\002\000\000\000\000\000\128\000\000\000\000\004\129\016#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\246D\b/\226*\000\t\131\131\220h\176(4'\225\"\213\138\173\190fz\002\129\252\000\000x\224\001\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\128\"\128\b\"\002C\129\130 \014\192\016 \000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\129\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b\"\002C\129\130 \014\192\016 \000\001 \000\000@\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\012 \002C\128\002 \014\192\000`\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\128\000\132\128\"\128\b \002C\128\002 \012\193\000!\000\001\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\132\128\"\128\b \002C\128\002 \012\192\000 \000\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000 \000\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\128\"\240\024 \024\250@\002 \012\000\000 \000\132\128\"\128\b \000B\000\002\000\012\192\000 \000\001\000\000\000@\000\000\000\128\000\000\000\000\000\000\128\001\000\000\000@\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \016C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \016C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\128\004\000@\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000@\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\014\192\001 \000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\001@\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \016C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \000\132\128\"\128\b \000C\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@@ \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000@\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\012 \000C\128\002\000\012\192\000`\000\b\128\000\000@\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000@\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000\016\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\132\000\000\128\000\002\016B\128\128\000\000@\016\000\000\132\000\000\128\000\002\016B\000\128\000\000@\016\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\000\128\000\000@\016\000\000\b\000\000\000\000@\b\000\128\000\000\000\000\000\000\000\b\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\128\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\128\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\n \192\000\000\000\000\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\128\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\002\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\128\130 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\132\128*\128\b\"\002C\128\130 \014\192\016 \004\132\000\000\128\000\002\000C\128\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184\192\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\000\132\000\000\128\000\002\000C\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\133\128\170\128\b0\bC\128\002 \014\192\000`\004\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\001@\000\000\002\000\000\000\000\000\128\000\000\000\000\004\001\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\133\128\170\128\b0\bC\128\002 \014\192\000 \004\133\128\170\128\b0\bC\128\002 \014\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b \000C\128\002\000\014\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000B\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000B\000\002\000\012\192\000 \004\002\000\000$\128\004\024\000\128\016\000\000\000\000\000\128\002\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\016 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000B\000\002\000\012\192\000 \004\002\000\000$\128\004\024\000\128\016\000\000\000\000\000\128\002\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\003 \000x\016\000\024\184P\000 \016\002\000\001\000\003\000\002p\016\000\024\184@\000 \000\000\000\001@\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\160\"\128\b \018C@\002 \028\192\016 \004\132\128\"\128\012 \002C\128\002 \012\192\016a\004\132\128\"\128\b \002C\128\002 \012\192\016!\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\016!\004\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\016 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\002 \014\192\016 \004\001 \000\b\000\000\016\000P\000\000\016\002\000\001\000\001 \000\000\000\000\016\000P\000\000\016\002\000\001\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\012 \002C\128\002 \012\192\016a\004\132\128\"\128\b \002C\128\002 \012\192\016!\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\000\000\000\000\000\000\b\128\000\000@\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\000\000\128\000\002\016B\129\128\000\000@\016\000\000\132\000\000\128\000\002\016B\001\128\000\000@\016\000\000\132\000\000\128\000\002\000B\001\128\000\000@\016\000\000\b\000\000\000\000@\b\000\128\000\000\000\000\000\000\128\000\000\000\000\000@\b\000\128\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\128\000\000\000\000\000\000\128\000\000\000\b\000\000\b\000\128\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\003\128\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\003\128\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$\250\000\129\240\000\000\024\224#a\000E\130\141\190$z\000\129\240\000\000\024\224\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\026 \192\000\000\128\000\000\000\128\001\000\000@\002\000\026 \192\000\000\128\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\003!\004@\200\004\024$\218\000 0\000\000\016@}\246D\b/\226*\000\t\131\131\220h\176(4\003!\004@\128\004\024$\218\000 0\000\000\016@\003!\004@\128\004\024$Z\000 0\000\000\016@\003!\000@\128\004\024$Z\000 0\000\000\016@\000\000\000\000\000\000\000\001\000\001\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\128\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$\214\000 0\000\000\016@\003)\000P\144\004\024$V\000 0\000\000\016@\003)\000P\144\020\024$V\000 0\000\000\016@\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\004\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\169*\212\026\163\154g\247\130 <\192\016x\212\133\169*\212\026\163\154g\247\130 <\192\016x\212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\130 \012\192\016`\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\130 \012\192\016`\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\130 \012\192\016`\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\128*\128\b\"\002C\129\130 \012\192\016`\020\003!\004@\128\004\024$Z\000 0\000\000\016@\003!\000@\128\004\024$Z\000 0\000\000\016@\000\000\000\000\000\000\000\001\000\001\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\016\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184\192\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000 \004\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000 \004\003)\000P\144\004\024$V\000 2\000\000P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\000 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\132\128\"\128\b \002C\000\002 \012\192\000 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\002\000\012\192\000 \000\003!\004@\192\004\024$\218\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\002 \012\192\000 \004\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\002 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002\000\012\192\000 \000\132\128\"\128\b \002B\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002\000\012\192\000 \000\132\128\"\128\b \002B\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\002 \014\192\002 \004\192\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\193\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\001\128\000\000@\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131!\000@\128\004\024$Z\000 4\016\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\012 \002C\128\002 \014\192\000a\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\012 \002C\128\002 \014\192\000a\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \002C\000\002 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\132\128\"\128\b \002C\000\002 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\128\000\004\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\004\000\000\000\000\000\003\000\000`\000\000\024\184\192\000$\000\002\000\000\000\003\000\000`\000\000\024\184@\000$\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\000\000\000\b\000\000\000$\000\000\000\000\000\003\000\000`\000\000\024\184@\000$\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\b\000\000\000 \000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003 \000x\016\000\024\184P\000 \016\002\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\132\128\"\128\b \000C\000\002\000\012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \000C\000\002\000\014\192\017 \004\003 \000x\016\000\024\184P\000 \016\002\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\132\128\"\128\b \000C\000\002\000\012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\128\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \000B\000\002\000\012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\024\000@\000\000\016\000\000\000\000\128\000\136\007\224,\004\128\000|D\002\004\001\130\139\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\128\000\128\007\224,\004\128\000|D\002\004\001\130\139\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\190$z\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\016\000\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$Z\000 4\016\000\016@\000\000\000\000\000\000\000\000\128\000\000\000\128\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000'\225 \197\138\173\190fz\002\161\252\128\0008\224\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\005\161 \128\b \026B\002\002 \028\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002B\000\002 \012\129\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002B\000\002\000\012\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\001\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000'\225 \197\138\173\190fz\002\161\252\128\0008\224'\225 \197\138\173\190fz\002\161\252\128\0008\224\004\128 \128\b \002B\000\002 \012\128\000 \000\004\128 \128\b \002B\000\002 \012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002C\000\002 \012\128\000 \000\004\128 \128\b \002B\000\002 \012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002C\000\002 \012\128\000 \000\004\128 \128\b \002B\000\002 \012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") + (128, "'\233 \197\138\173\190f~\002\129\252\128\0008\224#i\000E\194\141\190$\254\000\129\240\000\000\024\224}\246D\b/\226*\000\t\131\131\220x\176(4\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\175\235f\245\155\175\190f\255\146\163\252Q\016y\224}\246D\b/\226*\000\t\131\131\220x\176(4\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$\254\000\129\240\000\000\024\224}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224\000\000\000\000@\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\128\000\128\007\224,\004\128\000|D\002\004\001\002\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\128\179\160\b2\nC\129\131$\014\193\018!\020\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@@ \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\018C\128\002 \014\193\003 \004\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128 \128\b \000B\128\002\000\012@\000 \000\132\128 \128\b \000B\000\002\000\012@\000 \000\003\000\000$\193\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \128\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \000C\000\002\000\014\192\017 \004\003 \000x\016\000\024\184P\000 \016\002\000\001\000\132\128\"\128\012 \018C\128\002 \012\193\016a\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003 \000p\016\000\024\184P\000 \016\002\000\001\000\003\000\bp\016 \024\184@\000 \000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2\nC\129\130$\014\192\022a\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000$\000\002\000\000\000\001\000\016\000\000\000\b\000\000\000$\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000$\193\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\128\016\000\000\000\000\000\128\003\000\000$\129\004\024\000\000\016\000\000\000\000\000\128\003\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \002C\000\002 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\016 \004}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224#i\000E\194\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\003\000\002p\016\000\024\184@\000 \000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\003\000\000p\016\000\024\184@\000 \000\000\000\001@\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\016\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128;\128\b2\002C\129\130$\014\192\022!\022\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\024\024@\000\000\000\000\000\000\000\003\000\000p\016 \024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2\nC\129\130$\014\192\022!\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\130$\014\192\022a\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\130$\014\192\022!\022\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128\187\128\b2\002C\129\130$\014\192\022!\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\130$\014\192\022a\022\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\197\128\187\128\b2\nC\129\130$\014\192\022!\022\197\128\187\128\b2\nC\129\130$\014\192\022!\022\197\128\187\128\b2\nC\129\130$\014\192\022!\022\196\128;\128\b2\002C\129\130$\014\192\022!\020\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\004\000\000\000\128\000\004\000\000\000\001\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\002\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\175\235w\253\155\239\190\255\255\147\167\252\210\0169\228\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\004\000\000\000\001\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\003\000\000p\016\000\024\184@\000 \000\000\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\004\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\025\000\000\000\000\000\128\000\000\002\000\000\000\000\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\025\000\000\000\000\000\128\000\000\002\000\002\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\128\000\025\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\132\000\000\128@\002\016B\129\128\000\000@\016\000\000\132\000\000\128\000\002\016B\129\128\000\000@\016\000\000\132\000\000\128\000\002\016B\001\128\000\000@\016\000\000\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\136G\224,\028\164^|d6\020\001\146\203\128\000\b\000\000\000\000\000\002\000\000 \000\000\000\000\131\000\000\000@\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\167\233 \197\138\173\190f\254\002\129\252@\0008\224\167\233 \197\138\173\190f~\002\129\252@\0008\224\167\233\"\197\138\173\190f~\002\129\252\192\0008\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@@\000\016 \128\000\002\000\000\000\000\128\001\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\002@@\000\000\016 \000\000\002\000\000\000\000\000#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\001\000\000\000@\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192#i\000E\130\141\190$~\000\129\240\000\000\024\224#i\000E\194\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\163i\136G\226\173\190\164~|\197\242\004\001\154\235\129!\bD\002\129\152$r\000\0000\000\000\024\192#i\000E\130\141\190$~\000\129\240\000\000\028\224\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\020@\003)\002@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\002\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\128\000\017\000\000\000\000\000\128\000\000\002\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\002\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\016@\003!\000@\192\004\024$\210\000 0\000\000\016@\003!\000@\128\004\024$\210\000 0\000\000\016@\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027P\144\020\024$\214\000 2\130\006\213P\000\001\000\000\128\004\000\000\002\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027P\144\020\024$\222\000 6\145\006\213P\001\000\000\000\000\000\016\004P\000\000\000\000\000\000\000\131)\b@\128\004\024$^\000 4\016\000\144@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\016@\003)\000@\128\004\024$\222\000 4\016\000\016@\003)\000@\128\004\024$^\000 4\016\000\016@\003!\000@\128\004\024$Z\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027@\128\020\024$\222\000 6\144\004\213P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\003)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\131)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\147)\027@\128\020\024$\222\000 6\144\004\213P\131\169\136G\224,\028\164^|d6\020\001\146\203\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\b\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\004\193\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\131\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\128\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\002@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\018\000\000\000\000\000\128\000\000\000\000\004\133\016\131)\002@\128\004\024$^\000 4\016\000\020@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\128\000\000\000\000\004\129\016\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\131\000\001\000\000\000\b\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\131)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\003)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\003)\000P\144\004\024$\214\001 2\000\004\209X\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\002\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\004@\200$\024$\222\000 4\000\000\016@\001\002@@@\000\016 \128\000\002\000\000\000\000\128\001\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\003\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\003\002H@\000 \024 \000\000\002\000\000\000\000\000\192\000\b\000\000\016\016\000\128\000\000\000\001\000@\000\000\000\000\000\000\000\016\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \004\000\128\000\000\000 \000\000\000\000\000\000\000\000\000\000\003\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\001\000\000\003\000\000x\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \020\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\018 \020\196\128*\128\b0\002C\128\002 \014\192\018 \004\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\018 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\001\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\002 \014\193\003 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \004\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \004\000\000\000\000\000\000\000\000\000\000\000\002\001\001\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\002 \014\193\002 \004\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\002 \014\193\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \004\000\128\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\002C\128\002 \014\192\002 \004\192\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\192\002`\004\005\002H@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\016\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\192\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\003 \014\193\002`\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\128\001\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224#i\002E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\b\000\000\000\b\000\000\000\000\000\128\000\016\000\000\000\000\000\000\000\b\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\001!\000D\002\129\152$r\000\0000\000\000\024\192\192\000\017\000\000\000\000\000\000\000`\002\005\002@\000#i\000E\194\141\190$\254\000\129\240@\000\024\224#i\000E\130\141\190$\254\000\129\240@\000\024\224#i\000E\130\141\190$~\000\129\240@\000\024\224\001!\000DB\129\152$\242\000\0000\000\000\024\192\001!\000D\002\129\152$\242\000\0000\000\000\024\192\001!\000D\002\129\152$r\000\0000\000\000\024\192\001!\000D\002\129\152$r\000\0000\000\000\024\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\001\000\000\000\000\000\024\004p\000\000\000\000\000\000\000\163i\136G\226\173\190\164~|\197\242\004\001\154\235\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163i\bE\130\141\190$~\000\129\240\000\000\024\224\163i\bE\130\141\190$~\000\129\240\000\000\024\224\129\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\000\000@\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163i\bE\130\141\190$~\000\129\240\000\000\024\224\163i\bE\130\141\190$~\000\129\240\000\000\024\224\131)\b@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\000\128\000\000\002\000\004\193\016\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\001!\000D\002\129\152$r\000\0000\000\000\024\192\000\000\000\000\000\000\000\000\000\000`\000\005\004\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224#i\000E\194\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\016@\016\000\000\000\000\016\000\000\128\000\000\000\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000P\208\004\024$\214\000 0\000\000\016@\003)\000P\144\004\024$\214\000 0\000\000\016@\003)\000P\144\004\024$V\000 0\000\000\016@\002\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\b\000\000\000\000\000\128\000\000\002\000\004\193\016\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\169\136G\224,\028\164^|d6\020\001\146\203\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\020\024$V\000 2\000\002P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000@\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\001\000\000\000\000\016\b\000\000\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\024\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\016@\003)\000@\128\004\024$\222\000 4\016\000\016@\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\001!\000DB\129\152$\242\000\0000\000\000\024\192\001!\000D\002\129\152$\242\000\0000\000\000\024\192\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\218\231\247\255l>\237\183\255\207\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\001!\000D\002\129\152$r\000\0000\000\000\024\192\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\128\000\027\000\000\000\000\000\000\000\000\000\000\004\005\000\163i\011E\130\141\190$~\000\129\240\000\000\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\218\231\247\255l>\237\183\255\207\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\004#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\218\231\247\255l>\237\183\255\207\196\148\187\131\232>B\195\129\255l\014\237\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\231\253\187\199\234\191\254\231\255\255\173\254\232\183\255\239}\246D\b/\226*\000\t\131\131\220x\176(4#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\003)\000@\128\004\024$\222\000 0\000\000\016@\003)\000@\128\004\024$^\000 0\000\000\016@\135\169\"\208\152$\026g\214\003 >\192\006\241T#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\128\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\193\016\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\000@\128\004\024$^\000 0\002\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\131)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016\128\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\003 \012\192\000 \004\132\128\"\128\b\"\002C\001\131 \012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\128\000\155\003\224\012\000\128\128|\004\002\000\005\134\003\163i\011E\130\141\190$~\000\129\240\000\000\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\001\000\000\000\000\000\024\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\197\189\187\215\250\191\219\231\247\255l>\237\183\255\207#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\197\189\187\215\250\191\218\231\247\255l>\237\183\255\223\197\189\187\215\250\191\218\231\247\255,>\232\183\255\207\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\016\000P\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\001\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015#i\000E\130\141\190$~\000\129\240\000\000\024\224\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129!\bD\002\129\152$r\000\0000\000\000\024\192\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\002E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192@\000\000\000\000\000\000\000\000\000`\000\005\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\002\000\002@\000\128\000\017\000\000\000\000\000\000\000\000\002\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\001\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000`\000\005\000\000\000\001\000\000\000\000\000\024\004p\000\000\000\000\000\000\000\192\000\017\000\000\000\000\000\000\000`\002\005\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\128\000\017\000\000\000\000\000\000\000\b\000\000\004\001\000\128\000\145\003\224\012\000\128\128|\012\002\000\005\130\003\128\000\016\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\b\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\016\000\128\001\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000@\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\003 \012\192\000 \004\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\016\000\000\128\000\000\002\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000@\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\128\001\000\000\000\000@\000\003\000\000`\000\000\024\184P\000 \000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\017\000\000\000\000\000\128\000\004\000\000\000\000\016\000\000\017\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\b\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\128\000\004\000\000\000\000\016\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\133\128\162\128\b0\nC\128\003 \012\192\016!\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\128\162\128\b \nC\128\003 \012\192\016!\004\003\000\000`\000\000\024\184P\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000`\000\000\024\184P\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\133\128\"\128\b \nC\128\003 \012\192\016!\004\133\128\162\128\b0\nC\128\003 \012\192\016!\004\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\133\128\"\128\b \nC\128\003 \012\192\016!\004\133\128\162\128\b0\nC\128\003 \012\192\016!\004\000\000\000\000\000\000\000\000\128\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\004@\128\004\024$\222\000 0\000\000\016@\003)\004@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 0\000\000\016@\132\128\"\128\b \002C\000\003 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\b\000\000\000\016\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\128\000\b\000\000\000\000\000\000\000\000\000\000\006A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\136\003\224\012\000\128\128|\004\002\000\007\194\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \018C\128\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\128\004\000@\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000@\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \014\192\000 \000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\002C\128\002 \012\192\000 \000\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\132\128\"\128\b \002C\000\002 \012\192\000 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\132\128\"\128\b \002C\000\002 \012\192\000 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224\003)\000@\128\004\024$^\000 4\016\000\016@\016\000\002\000\000\000\000\000\128\000\000\000\000\004\129\016#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\246D\b/\226*\000\t\131\131\220x\176(4'\233\"\213\138\173\190f~\002\129\252\000\000x\224\001\002@@@\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \128\000\002\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\132\128\"\128\b \018C\128\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\128\"\128\b\"\002C\129\130 \014\192\016 \000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\129\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b\"\002C\129\130 \014\192\016 \000\001 \000\000@\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\012 \002C\128\002 \014\192\000`\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\128\000\132\128\"\128\b \002C\128\002 \012\193\000!\000\001\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\132\128\"\128\b \002C\128\002 \012\192\000 \000\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000 \000\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\128\"\240\024 \024\250@\002 \012\000\000 \000\132\128\"\128\b \000B\000\002\000\012\192\000 \000\001\000\000\000@\000\000\000\128\000\000\000\000\000\000\128\001\000\000\000@\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \016C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \016C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\128\004\000@\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000@\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\014\192\001 \000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\001@\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \016C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\003\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\193\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \000\132\128\"\128\b \000C\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000@\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@@ \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \128\000\002\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\196\128\"\128\b0\000C\128\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000@\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000\192\000\000\016\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\012 \000C\128\002\000\012\192\000`\000\b\128\000\000@\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000@\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000\016\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\132\000\000\128\000\002\016B\128\128\000\000@\016\000\000\132\000\000\128\000\002\016B\000\128\000\000@\016\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\000\128\000\000@\016\000\000\b\000\000\000\000@\b\000\128\000\000\000\000\000\000\000\b\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\128\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\128\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\n \192\000\000\000\000\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\128\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\002\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\128\130 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\132\128*\128\b\"\002C\128\130 \014\192\016 \004\132\000\000\128\000\002\000C\128\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184\192\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\000\132\000\000\128\000\002\000C\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\000\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\n @\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\133\128\170\128\b0\bC\128\002 \014\192\000`\004\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\001@\000\000\002\000\000\000\000\000\128\000\000\000\000\004\001\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\133\128\170\128\b0\bC\128\002 \014\192\000 \004\133\128\170\128\b0\bC\128\002 \014\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b \000C\128\002\000\014\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\000 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000B\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000B\000\002\000\012\192\000 \004\002\000\000$\128\004\024\000\128\016\000\000\000\000\000\128\002\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\016 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000B\000\002\000\012\192\000 \004\002\000\000$\128\004\024\000\128\016\000\000\000\000\000\128\002\000\000$\128\004\024\000\000\016\000\000\000\000\000\128\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\003 \000x\016\000\024\184P\000 \016\002\000\001\000\003\000\002p\016\000\024\184@\000 \000\000\000\001@\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\160\"\128\b \018C@\002 \028\192\016 \004\132\128\"\128\012 \002C\128\002 \012\192\016a\004\132\128\"\128\b \002C\128\002 \012\192\016!\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\016!\004\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\016 \004\132\128\"\128\b \000B\000\002\000\012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\002 \014\192\016 \004\001 \000\b\000\000\016\000P\000\000\016\002\000\001\000\001 \000\000\000\000\016\000P\000\000\016\002\000\001\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\012 \002C\128\002 \012\192\016a\004\132\128\"\128\b \002C\128\002 \012\192\016!\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\000\000\000\000\000\000\000\b\128\000\000@\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\000\000\128\000\002\016B\129\128\000\000@\016\000\000\132\000\000\128\000\002\016B\001\128\000\000@\016\000\000\132\000\000\128\000\002\000B\001\128\000\000@\016\000\000\b\000\000\000\000@\b\000\128\000\000\000\000\000\000\128\000\000\000\000\000@\b\000\128\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\128\000\000\000\000\000\000\128\000\000\000\b\000\000\b\000\128\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\003\128\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\003\128\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$\254\000\129\240\000\000\024\224#i\000E\130\141\190$~\000\129\240\000\000\024\224\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\026 \192\000\000\128\000\000\000\128\001\000\000@\002\000\026 \192\000\000\128\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\003)\004@\200\004\024$\222\000 0\000\000\016@}\246D\b/\226*\000\t\131\131\220x\176(4\003)\004@\128\004\024$\222\000 0\000\000\016@\003)\004@\128\004\024$^\000 0\000\000\016@\003)\000@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\001\000\001\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\128\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$\214\000 0\000\000\016@\003)\000P\144\004\024$V\000 0\000\000\016@\003)\000P\144\020\024$V\000 0\000\000\016@\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\004\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\169*\212\026\163\154g\247\130 <\192\016x\212\133\169*\212\026\163\154g\247\130 <\192\016x\212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\130 \012\192\016`\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\130 \012\192\016`\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\002C\129\130 \012\192\016`\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\128*\128\b\"\002C\129\130 \012\192\016`\020\003)\004@\128\004\024$^\000 0\000\000\016@\003)\000@\128\004\024$^\000 0\000\000\016@\000\000\000\000\000\000\000\001\000\001\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\128\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\016\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\000\000\128\000\002\000C\129\128\000\000@\016\000\016\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184\192\000 \000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000C\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\001\128\000\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000 \004\003\000\000p\018\000\026\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\026 @\000\000\128\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000 \004\003)\000P\144\004\024$V\000 2\000\000P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\000 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\b\000\000\000\000\000\b\000\192\000\000\000\000\000\000\000\b\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003)\000P\144\004\024$V\000 2\000\000P@\132\128\"\128\b \002C\000\002 \012\192\000 \004\132\128\"\128\b \002B\000\002 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\002\000\012\192\000 \000\003)\004@\192\004\024$\222\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\002 \012\192\000 \004\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\002 \012\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002\000\012\192\000 \000\132\128\"\128\b \002B\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002B\000\003 \012\192\000 \004\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002\000\012\192\000 \000\132\128\"\128\b \002B\000\002\000\012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\018C\128\002 \014\192\002 \004\192\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\003)\000@\128\004\024$^\000 4\018\000\016@\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\024$R\000 0\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\000\128\000\000\002\128\004\197\016\000\000\b\000\000\000\000\000\128\000\000\000\000\004\193\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\000B\001\128\000\000@\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\129\152$r\000\0000\000\000\024\192\196\148\187\131\232>B\195\129\255l\014\237\183\231\015\003)\000@\192\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$\222\000 4\016\000\017@\003)\000@\128\004\024$^\000 4\016\000\017@\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\196\148\187\131\232>B\195\129\255,\014\232\183\231\015@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131)\000@\128\004\024$^\000 4\016\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\148\187\131\232>B\195\129\255,\014\232\183\231\015\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\012 \002C\128\002 \014\192\000a\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\012 \002C\128\002 \014\192\000a\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \002C\000\002 \014\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\132\128\"\128\b \002C\000\002 \012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\128\000\004\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\004\000\000\000\000\000\003\000\000`\000\000\024\184\192\000$\000\002\000\000\000\003\000\000`\000\000\024\184@\000$\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\000\000\000\b\000\000\000$\000\000\000\000\000\003\000\000`\000\000\024\184@\000$\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128\000\000\016\b\000\000\000 \000\000\000\000\000\003\000\000`\000\000\024\184@\000 \000\000\000\000\000\196\128\187\128\b2\002C\129\130$\014\192\022!\022\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\000\000\000\000\b\000\000\000 \000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\004\000\000\000\000\000\000\000@\b\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\128\002 \012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003 \000x\016\000\024\184P\000 \016\002\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\132\128\"\128\b \000C\000\002\000\012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\132\128\"\130\b \000C\000\002\000\014\192\017 \004\003 \000x\016\000\024\184P\000 \016\002\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \000C\000\002\000\012\192\016 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\016\000@\000\000\016\000\000\001\000\001 \000\000\000\000\016\000@\000\000\016\000\000\001\000\132\128\"\128\b \000C\000\002\000\012\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \002C\000\002 \012\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\128\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \000B\000\002\000\012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\024\000@\000\000\016\000\000\000\000\128\000\136\007\224,\004\128\000|D\002\004\001\130\139\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\128\000\128\007\224,\004\128\000|D\002\004\001\130\139\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\016\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\024\184@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#i\000E\130\141\190$~\000\129\240\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000\000\016 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002@@\000 \024 \000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\016\000\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000@\128\004\024$^\000 4\016\000\016@\000\000\000\000\000\000\000\000\128\000\000\000\128\004\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000'\233 \197\138\173\190f~\002\161\252\128\0008\224\001\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\005\161 \128\b \026B\002\002 \028\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002B\000\002 \012\129\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002B\000\002\000\012\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\001\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000'\233 \197\138\173\190f~\002\161\252\128\0008\224'\233 \197\138\173\190f~\002\161\252\128\0008\224\004\128 \128\b \002B\000\002 \012\128\000 \000\004\128 \128\b \002B\000\002 \012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002C\000\002 \012\128\000 \000\004\128 \128\b \002B\000\002 \012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \002C\000\002 \012\128\000 \000\004\128 \128\b \002B\000\002 \012\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") and start = 15 and action = - ((16, "n\218x\156sZ\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\248sZ\000\000\000\000\021\000sZn\218\003F\005F\001H\169t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000x\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000O\006P\000P\000\000\001\150\b\136\000\000\000\172\001\166\t\136\000\000\003$\002@\n\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\204\000\000\000\000\000\000\002V~\184\000\000\000\000\000\000\002\164\000\000\000\000\131\204\003V\003\"\000\000\000\000\210\208\002\164\000\000t\166\021\000}\136\1702\004n\000\000\021\000\133Tx\028\021\000z\216\000\000\001\022\000\000z\216\001\192\000\000lZ\000\000\001l\000\000\000\000\004B\000\000\002\164\000\000\000\000\000\000\005P\000\000lZ\000\000\006\230\203\134\208p\179~\000\000\209\224\210\208\000\000y\136\194\224\000\000\208\208\026\184~\184sZn\218\000\000\000\000x\028\021\000{Bz\216\007\014\198\242\000\000\2066sZn\218x\156\021\000\000\000\000\000\017\000t\132\021\000\165N\165<\000\000\004\158\000\000\000\000\005h\000\000\000\000t8\022\140\021\188\002\248\000\007\000\000\000\000\002&\000\000}\136\004\150\004t\021\000\023\238\021\000n\218n\218\000\000\000\000\000\000w\206s\178\021\000\023\238\005\190\000\000uV\021\000\132\152\023\228\020\160\007D\000\000\005\226\007V\000\000\000\000\000\000\000\000\000\000\021\000\000\000\000\000\000\000\017\000\000\000x\156\021\000\000\000l\238\191\154~V\001\000\133T\165<\192*\192*\000\000\007D\000\000\000\028\000\000\000\000\022\150\184\004\196\190\000\000\184\004\196\190\000\000\184\004\184\004\003\014\007\004\004\028\000\000\004\228\000\000\006\176\000\000\000\000\007\230\000\000\000\000\000\000\184\004\002\164\000\000\000\000\166\216\184\004\164J\194\224\000\000\t\004\027\214\210\208\194\224\006\188\184\004\000\000\000\000\000\000\000\000\000\000\000\000\127B\194\224\128@\003\014\000\000\000\000\000\000\000F\000\000\000\000\167\156\bD\002\164\000\000\000\000\129>\000\000\000\000\000\000\bJ\000\000\184\004\000\000\001\b\197\216\000\000\184\004\006\b\184\004nv\000\000o\216\000\000\007\b\nJ\000\000\b\192\184\004\n\216\000\000\011\030\000\000\002\128\000\000\000\000\005\224\000\000\000\000\000\000&\212\031(\165\238\1508\193J\021\000\192*?\238@\238\150\244\193J\021\000\192*A\238B\238\151\176\193J\021\000\192*C\238D\238\152l\193J\021\000\192*E\238F\238\153(\193J\021\000\192*G\238H\238\153\228\193J\021\000\192*I\238J\238\021\000\165\001\208\001\252\000\000\014J\000\000\017\180\017@~\184p\154\000\000\020\196sH\017\226\021^\002\248\000\000\014:sH\184\004\014t\003\014\000\000\184\004\tt\nt\000\000\000\000\188\252\000\000\000\000\014fsH\189\128\134\016\000\000\021\000\184\004\014\228\184\004\130\018p\154\000\000\014\198\000\000\000\000p\154\000\000\000\000z\000\000\000\2066\129\b\020J\005\208\011J\017\204\017|sH\2066\129\b\000\000\000\000\020J\005\208\011J\017\226\017p\213\250y\146\194\224\018\014\213\250\184\004\024t\018 \213\250\194\224\018\"\213\250\190>\190\192\000\000\207t\000\000\000\000\172\218\211L\020J\005\208\011J\018 \017\190\213\250\172\218\211L\000\000\000\000\000\000\184\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\172\218\000\000\175\136\021\000r:\018>\198\242\000\000\2066\175\136\000\000\000\000\211z\021\000r:\018D\017\208\208p\211\240\000\252\018\130\000\000\000\000\191 \195\156\021\000\000\000\204\182\021\192\000\000\000\000\172\218\211z\000\000\000\000\000\000\202\230u\148v4\000\252\018\132\000\000\000\000\000\000\195\156\021\000\000\000\000\252\018\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\np\012\020J\005\208\011J\018^\192*\127p\021\000\165N{\174\021(\007\180\000\252\018d\007\240\000\000\000\000\018\022\000\000\000\000|j\000\000\006\208\015^\000\000\015J\000\000\018p\018\018\184\004\130\224\018\142\b\234\000\000\000\000\018H\000\000\000\000\021D\000>\015>\000\000\018\158\196\\\214\138\003\170\018:\184\004\015L\000\000\000\000\018P\000\000\000\000\000\000|j\000\000\004\252\015\204\000\000\015p\000\000\018\170\018:~\184\000\000\018\186\196\234\214\210\003\170\018\\\184\004\015\228\000\000\000\000\018x\000\000\000\000\000\000\021\000\000\000|j\000\000\021\"\020\196\127p\127p\197xsZ\021\000\206\212\165<\t\172\000\000\021j\002\248\000\000\015\132\127p\184\004\015\254\007D\000\000\021\000\165<\192\188\127p\015~\127p\000\000o\198p\180\000\000\176\254\000\000\000\000\177\158\000\000\000\000\178>\000\000\015\216\127p\178\222\206\212\165<\t\172\000\000\005\136\000\000\000\000\213\250\014\204\000\000\000\000v4\018\208\000\000|j\000\000\127pv4|j\000\000\021\000\184\004|j\000\000\015J\000\000\000\000|j\000\000\000\000{\174\000\000\207\166\213\250\018\142\127p\207\212\192*\000\000\193\144\210Z\020J\005\208\011J\018\230\192*\193\144\210Z\000\000\000\000\000\000\212>x\240\000\000\000\000\000\000\000\000\000\000\000\000\131\186\193\144\000\000\175\136\000\000\000\000\000\000\000\000\193\144\212>\000\000\000\000\000\000\131\186\019&\000\000\0198\000\000\193\144\212>\000\000\000\000\016J\000\000\000\000\184\136 :\000\000\000\000pl\000\000\184\004\r\170\000\000{\174\016\136\000\000\000\000\019h\198\006\000\000k\238\019B\000\000\000\000\019:\027\166\028\166\021\192\195\156\026T\021\000\000\000\193\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\198R\026T\021\000\000\000\015\158\198\242\000\000\2066\000\000\019<\027\166\028\166\193\144\000\000\019\\\000\000\004\246\015\004\021\000\210@\000\000\000\000\030\208\213h\000\000\000\000\018\246\000\000\019P\184\004\000\000\016\138\t\014\003\014\000\000\000\000\184\004\007\228\b\228\184\004\t\228\000\252\019~\000\000\000\000\205N\000\000\000\000\208p\000\000\172\218\000\000\019r\027\166\029\178\172\218\000\000\000\000\000\000\000\000\016\158\205 \208p\000\000\172\218\000\000\019t\027\166\029\178\172\218\000\000\016\198\000\000\000\000!\140\000\000\193\144\000\000\019\134\000\000\000\000\018\234\000\000\nR\000\000\000\000\019\006\000\000\000\000\184\004\019\012\000\000\000\000\028\230\169t\019\170\000\000\000\000\000\000\015\004\006\160\172|\019\176\000\000\000\000\000\000\000\000\000\000\000\000\0194\000\000\026T\000\000\0196\000\000\184\004\000\000\016R\000\000\000\000\019D\000\000\000\000\003\014\000\000\012\254\000\000\000\000\000\000\015\240\000\000\023\238\000\000\nF\000\000}\136\000\000\025d\000\000\b\230\000\000\019F\000\000\165<\026\"\000\000\000\000\b\160\019H\000\000\000\000\019>\t\158q\168\002\164\206\b\000\000\000\000\000\000\000\000\000\000\180\208\000\000\000\000\019\238\000\000\179\172\000\000\016\138\019\248\000\000\019\254\000\000r\154r\154\1648\1648\000\000\000\000\193\144\1648\000\000\000\000\000\000\193\144\1648\019j\000\000\019t\000\000"), (16, "\003\197\003\197\000\006\003F\003J\003\197\002\194\002\198\003\197\002\242\002\146\003\197\001b\003\197\004&\002\254\003\197\007\142\003\197\003\197\003\197\019\230\003\197\003\197\003\197\001\210\001z\t\021\001\138\003\002\003\197\003z\003~\011\154\003\197\005\r\003\197\004*\003\006\007\194\003\166\019\234\003\197\003\197\003\218\003\222\003\197\003\226\003\230\003\197\003\234\003\246\004\002\004\n\007n\004\250\003\197\003\197\002\186\005\r\001*\003\254\003\197\003\197\003\197\b\218\b\222\b\234\b\254\000\238\005\182\003\197\003\197\003\197\003\197\003\197\003\197\003\197\003\197\003\197\tr\bB\003\197\005\r\003\197\003\197\005\r\t~\t\150\n:\005\194\005\198\003\197\003\197\003\197\000\238\003\197\003\197\003\197\000\238\003\197\006\246\000\238\016\226\003\197\001f\003\197\003\197\004%\003\197\003\197\003\197\003\197\003\197\003\197\005\202\b\242\003\197\003\197\003\197\t\n\004\138\nN\006\250\003\197\003\197\003\197\003\197\014E\014E\002\001\n\166\018\138\014E\n\178\014E\014E\004Q\014E\014E\014E\014E\001j\014E\014E\014\t\014E\014E\014E\004E\014E\014E\014E\014E\005\r\014E\000\n\014E\014E\014E\014E\014E\014E\014E\014E\014\t\014E\018\210\014E\005:\014E\014E\014E\014E\014E\014E\014E\014E\006\181\014E\014E\000\238\014E\004\006\014E\014E\014E\002\001\014\017\014E\014E\014E\014E\014E\014E\014E\000\238\014E\014E\014E\014E\014E\014E\014E\014E\014E\014E\014E\014\017\014E\014E\004Q\014E\014E\002R\001\002\001\190\005\r\014E\014E\014E\014E\014E\001r\014E\014E\014E\002V\014E\014E\014\r\014E\014E\001\130\014E\014E\023\"\014E\014E\014E\014E\014E\014E\014E\014E\014E\014E\014E\014E\014E\014\r\005\r\014E\014E\014E\014E\001\153\001\153\001\153\0026\023*\001\153\004M\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\023&\001\153\tA\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\003R\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\tI\001\153\001\153\001\153\001\153\001\146\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\004M\001\153\001\153\001\153\001\153\001\153\005\134\001\153\002B\001\218\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\007J\001\153\001\153\001\153\t\"\001\153\005\250\001\153\001\153\021\146\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\017\230\001\153\001\153\001\153\001\153\001\153\011\177\011\177\005\r\005\r\003V\011\177\001\222\011\177\011\177\004\201\011\177\011\177\011\177\011\177\001\206\011\177\011\177\005\r\011\177\011\177\011\177\005\138\011\177\011\177\011\177\011\177\b\158\011\177\001\198\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\001f\011\177\000\238\011\177\004%\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\007\213\011\177\011\177\000\238\011\177\005.\011\177\011\177\011\177\002\170\000\238\011\177\011\177\011\177\011\177\011\177\011\177\011\177\000\n\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\006\194\011\177\011\177\004\201\011\177\011\177\002\001\002\001\tF\004\230\011\177\011\177\011\177\011\177\011\177\001\234\011\177\011\177\011\177\002\001\011\177\nf\001\182\n\234\011\177\006\213\011\177\011\177\022\246\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\001\186\011\177\011\177\011\177\011\177\011\177\004m\004m\001\238\001\002\001\190\004m\019\206\004m\004m\006f\004m\004m\004m\004m\004^\004m\004m\022\254\004m\004m\004m\001\206\004m\004m\004m\004m\018\202\004m\006\189\004m\004m\004m\004m\004m\004m\004m\004m\b\158\004m\002^\004m\t\166\004m\004m\004m\004m\004m\004m\004m\004m\000\238\004m\004m\003\233\004m\002\022\004m\004m\004m\002b\006\213\004m\004m\004m\004m\004m\004m\004m\003\233\004m\004m\004m\004m\004m\004m\004m\004m\004m\004m\004m\014J\n^\n\226\003^\004m\004m\t\170\t\198\007\198\b\005\004m\004m\004m\004m\004m\003b\004m\004m\004m\019\210\004m\nf\019*\n\234\004m\n\166\004m\004m\n\178\004m\004m\004m\004m\004m\004m\004m\004m\004m\004m\004m\004m\004m\b\002\004m\004m\004m\004m\004m\004]\004]\026\158\001\002\001\190\004]\004f\004]\004]\007\174\004]\004]\004]\004]\005\r\004]\004]\007\138\004]\004]\004]\003\030\004]\004]\004]\004]\026\166\004]\r\190\004]\004]\004]\004]\004]\004]\004]\004]\004Z\004]\nj\004]\003\"\004]\004]\004]\004]\004]\004]\004]\004]\t9\004]\004]\016\142\004]\016\154\004]\004]\004]\000\238\002v\004]\004]\004]\004]\004]\004]\004]\027\186\004]\004]\004]\004]\004]\004]\004]\004]\004]\004]\004]\005\r\n^\n\226\nI\004]\004]\005\r\005\r\027\190\004j\004]\004]\004]\004]\004]\003\150\004]\004]\004]\000\238\004]\nf\018*\n\234\004]\r\198\004]\004]\022\182\004]\004]\004]\004]\004]\004]\004]\004]\004]\004]\004]\004]\004]\003*\004]\004]\004]\004]\004]\011\017\011\017\003F\003J\000\238\011\017\005\146\011\017\011\017\007\253\011\017\011\017\011\017\011\017\003.\011\017\011\017\020\206\011\017\011\017\011\017\002z\011\017\011\017\011\017\011\017\005\r\011\017\014i\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\007\138\011\017\nI\011\017\014i\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\nM\011\017\011\017\027\194\011\017\015\006\011\017\011\017\011\017\001f\004%\011\017\011\017\011\017\011\017\011\017\011\017\011\017\000\238\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\018v\011\017\011\017\007j\011\017\011\017\014\166\b\"\003\186\005\r\011\017\011\017\011\017\011\017\011\017\004n\011\017\011\017\011\017\018~\011\017\011\017\b\226\011\017\011\017\004\138\011\017\011\017\026\018\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\001\206\005\r\011\017\011\017\011\017\011\017\011!\011!\005J\031\026\001\222\011!\nM\011!\011!\004\190\011!\011!\011!\011!\001\206\011!\011!\026\026\011!\011!\011!\022\198\011!\011!\011!\011!\n-\011!\006\181\011!\011!\011!\011!\011!\011!\011!\011!\007\138\011!\002\134\011!\002\198\011!\011!\011!\011!\011!\011!\011!\011!\003\190\011!\011!\004Z\011!\015.\011!\011!\011!\002\222\007\209\011!\011!\011!\011!\011!\011!\011!\000\238\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\022V\011!\011!\005\r\011!\011!\003\178\003F\022\n\n-\011!\011!\011!\011!\011!\003\194\011!\011!\011!\022f\011!\011!\022\030\011!\011!\004v\011!\011!\002z\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\004n\n-\011!\011!\011!\011!\011\025\011\025\t\250\005\r\007\210\011\025\n\001\011\025\011\025\007\182\011\025\011\025\011\025\011\025\005\r\011\025\011\025\007\138\011\025\011\025\011\025\007\218\011\025\011\025\011\025\011\025\000\238\011\025\0072\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\007\138\011\025\004z\011\025\023\002\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\000\238\011\025\011\025\000\238\011\025\015V\011\025\011\025\011\025\005*\005\n\011\025\011\025\011\025\011\025\011\025\011\025\011\025\007A\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\022z\011\025\011\025\007\246\011\025\011\025\025\242\002\198\007A\006\193\011\025\011\025\011\025\011\025\011\025\n\001\011\025\011\025\011\025\022f\011\025\011\025\n\166\011\025\011\025\n\178\011\025\011\025\014\138\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\002\014\001v\011\025\011\025\011\025\011\025\011\005\011\005\014\142\001\002\001\190\011\005\004\250\011\005\011\005\b\014\011\005\011\005\011\005\011\005\001\206\011\005\011\005\0076\011\005\011\005\011\005\n\246\011\005\011\005\011\005\011\005\b:\011\005\005.\011\005\011\005\011\005\011\005\011\005\011\005\011\005\011\005\014\154\011\005\001\222\011\005\n\250\011\005\011\005\011\005\011\005\011\005\011\005\011\005\011\005\000\238\011\005\011\005\004Z\011\005\015~\011\005\011\005\011\005\002\170\014\158\011\005\011\005\011\005\011\005\011\005\011\005\011\005\007I\011\005\011\005\011\005\011\005\011\005\011\005\011\005\011\005\011\005\011\005\011\005\t\237\011\005\011\005\026:\011\005\011\005\003\190\005n\007I\030\n\011\005\011\005\011\005\011\005\011\005\030\"\011\005\011\005\011\005\n\166\011\005\011\005\n\178\011\005\011\005\004\174\011\005\011\005\0112\011\005\011\005\011\005\011\005\011\005\011\005\011\005\011\005\011\005\011\005\011\005\011\005\011\005\000\238\001\134\011\005\011\005\011\005\011\005\011\r\011\r\001\002\001\190\016\194\011\r\n\005\011\r\011\r\b\146\011\r\011\r\011\r\011\r\006\"\011\r\011\r\007\138\011\r\011\r\011\r\002\234\011\r\011\r\011\r\011\r\r\138\011\r\b\226\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\005%\011\r\t\237\011\r\030\214\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\000\238\011\r\011\r\004Z\011\r\015\162\011\r\011\r\011\r\005f\0182\011\r\011\r\011\r\011\r\011\r\011\r\011\r\007Q\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\t\233\011\r\011\r\005%\011\r\011\r\b\158\015\226\007Q\003\186\011\r\011\r\011\r\011\r\011\r\n\005\011\r\011\r\011\r\000\238\011\r\011\r\000\238\011\r\011\r\b\030\011\r\011\r\016\198\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\000\238\001\150\011\r\011\r\011\r\011\r\011\t\011\t\005v\031\159\tn\011\t\014\178\011\t\011\t\022\230\011\t\011\t\011\t\011\t\006r\011\t\011\t\030\218\011\t\011\t\011\t\014\254\011\t\011\t\011\t\011\t\014\182\011\t\n)\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\005~\011\t\t\233\011\t\015\002\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\000\238\011\t\011\t\000\238\011\t\015\198\011\t\011\t\011\t\007B\007Z\011\t\011\t\011\t\011\t\011\t\011\t\011\t\006\170\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\r\178\011\t\011\t\r\206\011\t\011\t\007b\019\142\006\174\002!\011\t\011\t\011\t\011\t\011\t\b\158\011\t\011\t\011\t\005.\011\t\011\t\022\190\011\t\011\t\006\130\011\t\011\t\000\238\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\011\t\014\222\b\214\011\t\011\t\011\t\011\t\011\021\011\021\002\198\b\006\000\238\011\021\005.\011\021\011\021\000\238\011\021\011\021\011\021\011\021\015N\011\021\011\021\014\226\011\021\011\021\011\021\n\246\011\021\011\021\011\021\011\021\006\218\011\021\014\206\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\015R\011\021\014\014\011\021\015z\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\014\210\011\021\011\021\017\166\011\021\015\242\011\021\011\021\011\021\n\158\n\206\011\021\011\021\011\021\011\021\011\021\011\021\011\021\014\178\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\015&\011\021\011\021\014\138\011\021\011\021\017R\007F\015\238\007V\011\021\011\021\011\021\011\021\011\021\b\158\011\021\011\021\011\021\014\154\011\021\011\021\015*\011\021\011\021\015\158\011\021\011\021\000\238\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\015\194\018^\011\021\011\021\011\021\011\021\011%\011%\007\150\017Z\014\206\011%\015&\011%\011%\017\170\011%\011%\011%\011%\014\222\011%\011%\017\130\011%\011%\011%\014\254\011%\011%\011%\011%\016\018\011%\016\150\011%\011%\011%\011%\011%\011%\011%\011%\0166\011%\017n\011%\016\138\011%\011%\011%\011%\011%\011%\011%\011%\004Z\011%\011%\016\170\011%\016\022\011%\011%\011%\017r\015N\011%\011%\011%\011%\011%\011%\011%\017\254\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\022\018\011%\011%\016\162\011%\011%\017\150\001\206\003\190\002\158\011%\011%\011%\011%\011%\031\127\011%\011%\011%\017\218\011%\011%\004j\011%\011%\029\022\011%\011%\017\154\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\017\222\018F\011%\011%\011%\011%\011\029\011\029\018:\018\n\021\150\011\029\017\134\011\029\011\029\t\194\011\029\011\029\011\029\011\029\016\174\011\029\011\029\018J\011\029\011\029\011\029\000\238\011\029\011\029\011\029\011\029\018\014\011\029\r\190\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\018\002\011\029\019\178\011\029\023.\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\002\158\011\029\011\029\018\186\011\029\016:\011\029\011\029\011\029\t\218\r\190\011\029\011\029\011\029\011\029\011\029\011\029\011\029\r\190\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\023n\011\029\011\029\018\246\011\029\011\029\018>\0049\022Z\tE\011\029\011\029\011\029\011\029\011\029\002\198\011\029\011\029\011\029\023\202\011\029\011\029\027\202\011\029\011\029\018\230\011\029\011\029\023b\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\027\206\022\250\011\029\011\029\011\029\011\029\011\157\011\157\023\154\n\006\bV\011\157\006\197\011\157\011\157\0192\011\157\011\157\011\157\011\157\006~\011\157\011\157\021R\011\157\011\157\011\157\029\206\011\157\011\157\011\157\011\157\bV\011\157\019\182\011\157\011\157\011\157\011\157\011\157\011\157\011\157\011\157\028\n\011\157\023v\011\157\026\030\011\157\011\157\011\157\011\157\011\157\011\157\011\157\011\157\000\238\011\157\011\157\004Z\011\157\016V\011\157\011\157\011\157\026Z\026\170\011\157\011\157\011\157\011\157\011\157\011\157\011\157\023\206\011\157\011\157\011\157\011\157\011\157\011\157\011\157\011\157\011\157\011\157\011\157\023\182\011\157\011\157\t9\011\157\011\157\001\206\005\161\026\022\006\185\011\157\011\157\011\157\011\157\011\157\n\162\011\157\011\157\011\157\014q\011\157\011\157\000\238\011\157\011\157\031\022\011\157\011\157\t=\011\157\011\157\011\157\011\157\011\157\011\157\011\157\011\157\011\157\011\157\011\157\011\157\011\157\n\202\n\214\011\157\011\157\011\157\011\157\004Y\004Y\026\162\029\154\026z\004Y\028\014\004Y\004Y\n\230\004Y\004Y\004Y\004Y\027f\004Y\004Y\027>\004Y\004Y\004Y\027J\004Y\004Y\004Y\004Y\014}\004Y\r\170\004Y\004Y\004Y\004Y\004Y\004Y\004Y\004Y\028\238\004Y\014\170\004Y\bV\004Y\004Y\004Y\004Y\004Y\004Y\004Y\004Y\000\238\004Y\004Y\014\198\004Y\014\214\004Y\004Y\004Y\027\158\r\138\004Y\004Y\004Y\004Y\004Y\004Y\004Y\029\"\004Y\004Y\004Y\004Y\004Y\004Y\004Y\004Y\004Y\004Y\004Y\026\218\n^\n\226\bV\004Y\004Y\001\206\005%\031\143\030\006\004Y\004Y\004Y\004Y\004Y\bV\004Y\004Y\004Y\030\166\004Y\nf\r\218\n\234\004Y\000\238\004Y\004Y\023v\004Y\004Y\004Y\004Y\004Y\004Y\004Y\004Y\004Y\004Y\004Y\004Y\004Y\r\242\004Y\004Y\004Y\004Y\004Y\0021\0021\016\186\030z\002\234\0021\028\242\002\198\0021\031_\002\146\0021\n\154\0021\016\214\002\254\0021\016\246\0021\0021\0021\018\150\0021\0021\0021\001\210\018\190\n\210\004\022\003\002\0021\0021\0021\0021\0021\n\218\0021\029&\003\006\014\246\003\166\018\218\0021\0021\0021\0021\0021\003\226\003\230\0021\030\022\003\246\001\190\015\030\0021\015F\0021\0021\002\186\018\222\019\006\003\254\0021\0021\0021\b\218\b\222\b\234\030\170\014\234\005\182\0021\0021\0021\0021\0021\0021\0021\0021\0021\019\026\n^\n\226\019:\0021\0021\019J\019^\019\138\019\242\005\194\005\198\0021\0021\0021\019\250\0021\0021\0021\020\006\0021\014\242\021J\015n\0021\021^\0021\0021\021b\0021\0021\0021\0021\0021\0021\005\202\b\242\0021\0021\0021\t\n\004\138\006\214\022&\0021\0021\0021\0021\011\133\011\133\022>\022\206\022\210\011\133\023\n\002\198\011\133\023\014\002\146\011\133\011\133\011\133\0236\002\254\011\133\023:\011\133\011\133\011\133\023R\011\133\011\133\011\133\001\210\023\254\011\133\024\002\003\002\011\133\011\133\011\133\011\133\011\133\011\133\011\133\024&\003\006\015\230\003\166\024*\011\133\011\133\011\133\011\133\011\133\003\226\003\230\011\133\024:\003\246\001\190\016\n\011\133\016.\011\133\011\133\002\186\024J\024V\003\254\011\133\011\133\011\133\b\218\b\222\b\234\024\138\011\133\005\182\011\133\011\133\011\133\011\133\011\133\011\133\011\133\011\133\011\133\024\142\011\133\011\133\024\222\011\133\011\133\025\006\025\n\025\026\025j\005\194\005\198\011\133\011\133\011\133\025\138\011\133\011\133\011\133\025\202\011\133\011\133\025\238\011\133\011\133\025\254\011\133\011\133\026&\011\133\011\133\011\133\011\133\011\133\011\133\005\202\b\242\011\133\011\133\011\133\t\n\004\138\026*\0266\011\133\011\133\011\133\011\133\011\129\011\129\026F\026b\026r\011\129\026\134\002\198\011\129\026\178\002\146\011\129\011\129\011\129\026\182\002\254\011\129\026\194\011\129\011\129\011\129\026\210\011\129\011\129\011\129\001\210\026\230\011\129\027\218\003\002\011\129\011\129\011\129\011\129\011\129\011\129\011\129\0282\003\006\028Z\003\166\028\206\011\129\011\129\011\129\011\129\011\129\003\226\003\230\011\129\028\214\003\246\001\190\029.\011\129\029>\011\129\011\129\002\186\029J\029\174\003\254\011\129\011\129\011\129\b\218\b\222\b\234\029\194\011\129\005\182\011\129\011\129\011\129\011\129\011\129\011\129\011\129\011\129\011\129\029\242\011\129\011\129\029\250\011\129\011\129\0302\030Z\030\146\030\194\005\194\005\198\011\129\011\129\011\129\030\206\011\129\011\129\011\129\030\227\011\129\011\129\030\243\011\129\011\129\031\006\011\129\011\129\031\"\011\129\011\129\011\129\011\129\011\129\011\129\005\202\b\242\011\129\011\129\011\129\t\n\004\138\031?\031O\011\129\011\129\011\129\011\129\002\133\002\133\031k\031\191\031\219\002\133\031\230\002\198\002\133 \027\002\146\002\133\n\154\002\133 /\002\254\002\133 7\002\133\002\133\002\133 s\002\133\002\133\002\133\001\210 {\n\210\000\000\003\002\002\133\002\133\002\133\002\133\002\133\n\218\002\133\000\000\003\006\000\000\003\166\005\r\002\133\002\133\002\133\002\133\002\133\003\226\003\230\002\133\000\000\003\246\001\190\000\000\002\133\000\000\002\133\002\133\002\186\000\000\000\000\003\254\002\133\002\133\002\133\b\218\b\222\b\234\000\000\014\234\005\182\002\133\002\133\002\133\002\133\002\133\002\133\002\133\002\133\002\133\005u\000\000\002\133\000\000\002\133\002\133\000\000\005\r\000\000\005\r\005\194\005\198\002\133\002\133\002\133\000\000\002\133\002\133\002\133\007\022\002\133\000\238\005\r\005u\002\133\005\r\002\133\002\133\005\r\002\133\002\133\002\133\002\133\002\133\002\133\005\202\b\242\002\133\002\133\002\133\t\n\004\138\000\000\005\r\002\133\002\133\002\133\002\133\005\r\007\194\005\r\000\000\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\000\000\005\r\005\r\000\238\005\r\005\r\005\r\020B\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\000\000\005\r\005\r\000\000\000\238\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\bB\005\r\005\r\005\r\005\r\005\r\000\238\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\000\238\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\000\000\000\000\005\r\000\000\000\000\005\r\005\r\005\r\000\238\005\r\000\000\000\238\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\005\r\001*\bN\005\r\005\r\000\238\005\r\002\001\002\001\005\r\018\178\bV\005\r\002\146\005\r\000\000\000\000\020F\000\238\bZ\000\000\005\r\005\r\005\r\000\238\000\000\005\r\005\r\005\r\005\r\020\030\000\129\005\r\000\129\000\n\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\000\000\129\027\006\000\129\000\129\025\226\000\129\000\129\020\"\000\000\000\129\000\129\018\182\000\129\000\129\000\129\000\129\000\000\000\129\026R\000\129\000\129\000\000\002\001\000\129\000\129\018\194\000\129\000\129\000\129\007\225\000\129\023V\000\129\000\129\000\129\000\129\000\129\0272\000\129\000\129\000\129\000\129\000\129\000\000\000\000\000\129\000\129\000\000\007\225\000\129\000\129\005\198\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\000\007u\000\129\000\000\005y\000\129\007\217\000\129\000\000\000\129\007\026\002\198\000\000\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\007u\000\000\000\000\000\129\007\217\000\129\005y\000\000\007\217\000\222\000\000\000\000\000\000\000\129\n\026\020&\000\000\000\000\0206\000\129\000\129\000\129\000\129\000\000\n.\000\129\000\129\000\129\000\129\002}\002}\007\225\000\000\000\000\002}\003\178\002\198\002}\000\000\002\146\002}\b\230\002}\000\000\002\254\002}\000\000\002}\002}\002}\003\030\002}\002}\002}\001\210\000\000\000\000\000\000\003\002\002}\002}\002}\002}\002}\000\000\002}\000\000\003\006\000\000\003\166\003\"\002}\002}\002}\002}\002}\003\226\003\230\002}\007\217\003\246\b\238\000\000\002}\000\000\002}\002}\002\186\000\000\000\000\003\254\002}\002}\002}\b\218\b\222\b\234\000\000\0042\005\182\002}\002}\002}\002}\002}\002}\002}\002}\002}\007\194\n^\n\226\000\000\002}\002}\000\000\000\000\000\000\000\000\005\194\005\198\002}\002}\002}\000\000\002}\002}\002}\b\138\002}\nf\000\000\n\234\002}\000\000\002}\002}\000\000\002}\002}\002}\002}\002}\002}\005\202\b\242\002}\002}\002}\t\n\004\138\bB\002\198\002}\002}\002}\002}\002\145\002\145\002\001\002\001\000\000\002\145\002\001\002\198\002\145\000\000\000\000\002\145\000\000\002\145\003j\000\238\002\145\003\146\002\145\002\145\002\145\000\000\002\145\002\145\002\145\001\210\000\000\000\000\000\n\000\n\002\145\002\145\002\145\002\145\002\145\017\182\002\145\000\000\000\000\n\238\003\178\000\000\002\145\002\145\002\145\002\145\002\145\002\001\000\000\002\145\007\129\003\154\000\000\014\130\002\145\014\146\002\145\002\145\002\186\002\001\002\001\002\001\002\145\002\145\002\145\000\000\000\000\000\000\000\000\000\000\007\129\002\145\002\145\002\145\002\145\002\145\002\145\002\145\002\145\002\145\007\194\n^\n\226\000\000\002\145\002\145\007\130\002\001\000\000\t\233\000\000\000\000\002\145\002\145\002\145\000\000\002\145\002\145\002\145\020z\002\145\nf\000\000\n\234\002\145\000\000\002\145\002\145\b\205\002\145\002\145\002\145\002\145\002\145\002\145\n^\n\226\002\145\002\145\002\145\003*\003\190\bB\000\000\002\145\002\145\002\145\002\145\002\141\002\141\000\000\000\238\000\000\002\141\000\000\nf\002\141\n\234\b\205\002\141\003.\002\141\000\000\000\238\002\141\000\000\002\141\002\141\002\141\000\000\002\141\002\141\002\141\b\205\006e\000\000\b\205\tf\002\141\002\141\002\141\002\141\002\141\b\205\002\141\t&\001\190\b\205\000\000\000\000\002\141\002\141\002\141\002\141\002\141\017v\t\233\002\141\000\000\017\138\017\158\017\174\002\141\000\000\002\141\002\141\n-\t\146\007\194\020~\002\141\002\141\002\141\002\001\000\000\000\000\000\000\006e\b\170\002\141\002\141\002\141\002\141\002\141\002\141\002\141\002\141\002\141\000\000\n^\n\226\000\000\002\141\002\141\022\014\000\000\006e\000\000\b\174\000\n\002\141\002\141\002\141\000\000\002\141\002\141\002\141\016\222\002\141\nf\bB\n\234\002\141\000\000\002\141\002\141\012\t\002\141\002\141\002\141\002\141\002\141\002\141\000\000\000\000\002\141\002\141\002\141\000\238\b\158\002\001\000\238\002\141\002\141\002\141\002\141\002\129\002\129\000\000\000\000\000\000\002\129\000\238\000\000\002\129\000\000\012\t\002\129\000\000\002\129\000\000\000\000\002\129\000\000\002\129\002\129\002\129\000\000\002\129\002\129\002\129\012\t\000\000\031\175\012\t\014\006\002\129\002\129\002\129\002\129\002\129\012\t\002\129\006\146\000\000\012\t\006J\000\000\002\129\002\129\002\129\002\129\002\129\006\178\000\000\002\129\021\190\006\190\000\000\000\000\002\129\b\178\002\129\002\129\002\198\000\000\000\000\002\146\002\129\002\129\002\129\000\000\000\000\000\000\007\193\000\000\000\000\002\129\002\129\002\129\002\129\002\129\002\129\002\129\002\129\002\129\000\000\n^\n\226\000\000\002\129\002\129\000\000\007\030\000\000\000\000\000\238\007\193\002\129\002\129\002\129\000\000\002\129\002\129\002\129\000\000\002\129\nf\021\138\n\234\002\129\000\000\002\129\002\129\005\201\002\129\002\129\002\129\002\129\002\129\002\129\000\000\018\194\002\129\002\129\002\129\005\201\003\190\031\203\000\000\002\129\002\129\002\129\002\129\002)\002)\000\000\000\000\000\000\002)\000\000\006\146\002)\000\000\006J\002)\000\000\002)\005\198\000\000\002)\006\178\002)\002)\002)\006\190\002)\002)\002)\005\201\000\000\000\000\000\000\021\022\002)\002)\002)\002)\002)\000\000\002)\t&\017\234\000\000\000\000\000\000\002)\002)\002)\002)\002)\017v\t\025\002)\000\000\017\138\017\158\017\174\002)\005\201\002)\002)\005\201\000\000\000\000\000\000\002)\002)\002)\000\000\000\000\000\000\000\000\000\000\000\000\002)\002)\002)\002)\002)\002)\002)\002)\002)\ne\000\000\002)\000\000\002)\002)\002\182\002\198\000\000\000\000\000\238\000\000\002)\002)\002)\000\000\002)\002)\002)\t9\002)\000\000\t9\ne\002)\002\001\002)\002)\000\000\n\026\002)\002)\002)\002)\002)\000\000\000\000\002)\002)\n.\026Z\000\000\000\000\004n\002)\002)\002)\002)\n\029\n\029\000\000\000\000\003\178\n\029\000\n\006\146\n\029\000\000\006J\n\029\000\000\n\029\000\000\t9\n\029\006\178\n\029\n\029\n\029\006\190\n\029\n\029\n\029\002\001\000\000\000\000\000\000\t9\n\029\n\029\n\029\n\029\n\029\000\000\n\029\002\001\002\001\004\178\004z\000\000\n\029\n\029\n\029\n\029\n\029\0046\004B\n\029\000\000\000\000\000\000\004N\n\029\t9\n\029\n\029\000\000\000\000\000\000\000\000\n\029\n\029\n\029\000\000\000\000\000\000\na\000\000\000\000\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\n\029\000\000\000\000\n\029\t9\n\029\n\029\000\000\017\202\000\000\000\000\000\238\na\n\029\n\029\n\029\000\000\n\029\n\029\n\029\018\178\n\029\000\000\002\146\000\000\n\029\000\000\n\029\n\029\000\000\n\026\n\029\n\029\n\029\n\029\n\029\000\000\000\000\n\029\n\029\n.\nJ\000\000\000\000\002\254\n\029\n\029\n\029\n\029\002\137\002\137\000\000\002\014\000\000\002\137\002\146\006\146\002\137\000\000\006J\002\137\003\026\002\137\000\000\018\182\002\137\006\178\002\137\002\137\002\137\006\190\002\137\002\137\002\137\003&\000\000\000\000\000\000\018\194\002\137\002\137\002\137\002\137\002\137\000\000\002\137\000\000\b~\007\194\000\000\000\000\002\137\002\137\002\137\002\137\002\137\030\254\001\222\002\137\005\182\000\000\000\000\000\000\002\137\005\198\002\137\002\137\b\130\000\000\000\000\018\194\002\137\002\137\002\137\000\000\000\000\000\000\000\000\000\000\005\194\002\137\002\137\002\137\002\137\002\137\002\137\002\137\002\137\002\137\000\000\bB\002\137\029R\002\137\002\137\000\000\005\198\000\000\000\000\000\000\000\000\002\137\002\137\002\137\005\202\002\137\002\137\002\137\000\000\002\137\000\000\000\238\000\000\002\137\018\178\002\137\002\137\002\146\011\002\002\137\002\137\002\137\002\137\002\137\r\213\000\000\002\137\002\137\002\137\000\000\000\000\b\186\007\194\002\137\002\137\002\137\002\137\n\r\n\r\002\001\002\001\020\166\n\r\r\213\r\213\n\r\000\000\r\213\n\r\000\000\n\r\b\190\000\000\n\r\002\001\n\r\n\r\n\r\018\182\n\r\n\r\n\r\002\001\002\001\021\230\000\000\000\n\n\r\n\r\n\r\n\r\n\r\018\194\n\r\bB\000\000\000\000\002\001\000\000\n\r\n\r\n\r\n\r\n\r\007\233\000\000\n\r\000\000\000\238\000\n\000\000\n\r\000\000\n\r\n\r\000\238\000\000\002\001\005\198\n\r\n\r\n\r\000\000\007\233\000\000\000\000\000\000\007\233\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\007\194\r\213\n\r\002\001\n\r\n\r\000\000\000\000\000\000\0256\000\000\000\000\n\r\n\r\n\r\000\000\n\r\n\r\n\r\tR\n\r\000\000\000\000\000\000\n\r\000\000\n\r\n\r\000\000\n\026\n\r\n\r\n\r\n\r\n\r\r\209\000\000\n\r\n\r\n.\001\206\000\000\bB\002\198\n\r\n\r\n\r\n\r\003\193\003\193\000\000\007\233\029\226\003\193\r\209\r\209\003\193\000\000\r\209\003\193\000\000\003\193\000\000\000\238\011B\000\000\003\193\011\150\003\193\000\000\003\193\003\193\003\193\000\000\000\000\000\000\n\026\007\245\011\170\011\242\012\n\011\194\012\"\000\000\003\193\002\170\n.\015r\003\178\000\000\003\193\003\193\012:\012R\003\193\000\000\007\245\003\193\000\000\000\238\007\245\015\150\003\193\015\186\012j\003\193\000\000\000\000\000\000\000\000\003\193\003\193\000\238\000\000\000\000\004\230\000\000\000\000\005\165\003\193\003\193\011Z\011\218\012\130\012\154\012\202\003\193\003\193\007\194\r\209\003\193\000\000\003\193\012\226\000\000\000\000\000\000\000\000\000\238\000\000\003\193\003\193\012\250\000\000\003\193\003\193\003\193\019\222\003\193\000\000\000\000\000\000\003\193\000\000\003\193\003\193\000\000\rZ\003\193\rr\012\178\003\193\003\193\000\000\000\000\003\193\r\018\003\193\014\026\003\190\bB\005\166\003\193\003\193\r*\rB\002\233\002\233\000\000\000\000\000\000\002\233\000\000\014\"\002\233\000\000\014.\002\233\000\000\002\233\000\000\000\238\002\233\014:\002\233\002\233\002\233\014F\002\233\002\233\002\233\000\000\000\000\000\000\000\000\007\225\002\233\002\233\002\233\002\233\002\233\000\000\002\233\005\254\028\254\007\194\000\000\000\000\002\233\002\233\002\233\002\233\002\233\004\014\007\225\002\233\000\000\006\234\007\225\004\026\002\233\000\000\002\233\002\233\029\002\000\000\000\000\000\000\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\002\233\002\233\002\233\002\233\002\233\007\194\bB\002\233\000\000\002\233\002\233\000\000\000\000\000\000\000\000\000\238\000\000\002\233\002\233\002\233\000\000\002\233\002\233\002\233\0202\002\233\000\000\000\238\000\000\002\233\000\000\002\233\002\233\000\000\n\026\002\233\002\233\002\233\002\233\002\233\007\194\000\000\002\233\002\233\n.\b\197\000\000\bB\b\230\002\233\002\233\002\233\002\233\002\229\002\229\000\000\000\000\000\000\002\229\020N\b\197\002\229\000\000\006J\002\229\000\000\002\229\000\000\000\238\002\229\b\197\002\229\002\229\002\229\b\197\002\229\002\229\002\229\000\000\000\000\000\000\007\194\bB\002\229\002\229\002\229\002\229\002\229\000\000\002\229\000\000\000\000\007\194\000\000\000\000\002\229\002\229\002\229\002\229\002\229\020j\000\000\002\229\000\238\000\000\000\000\000\000\002\229\000\000\002\229\002\229\020\134\000\000\000\000\000\000\002\229\002\229\002\229\000\000\000\000\000\000\000\000\000\000\bB\002\229\002\229\011Z\002\229\002\229\002\229\002\229\002\229\002\229\007\194\bB\002\229\000\000\002\229\002\229\000\000\000\000\000\000\000\000\b\225\000\238\002\229\002\229\002\229\000\000\002\229\002\229\002\229\030\178\002\229\000\000\000\238\000\000\002\229\000\000\002\229\002\229\000\000\002\229\002\229\002\229\002\229\002\229\002\229\000\000\000\000\002\229\002\229\002\229\b\225\000\000\bB\000\000\002\229\002\229\002\229\002\229\002\185\002\185\000\000\000\000\000\000\002\185\000\000\b\225\002\185\000\000\006J\002\185\000\000\002\185\000\000\000\238\002\185\b\225\002\185\002\185\002\185\b\225\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\002\185\002\185\002\185\002\185\002\185\000\000\002\185\000\000\000\000\000\000\000\000\000\000\002\185\002\185\002\185\002\185\002\185\000\000\000\000\002\185\000\000\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\000\000\000\000\000\000\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\000\000\002\185\002\185\002\185\002\185\002\185\002\185\002\185\002\185\002\185\000\000\000\000\002\185\000\000\002\185\002\185\000\000\000\000\000\000\000\000\000\238\000\000\002\185\002\185\002\185\000\000\002\185\002\185\002\185\000\000\002\185\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\n\026\002\185\002\185\002\185\002\185\002\185\000\000\000\000\002\185\002\185\n.\b\253\000\000\000\000\000\000\002\185\002\185\002\185\002\185\002\181\002\181\000\000\000\000\000\000\002\181\000\000\006\146\002\181\000\000\006J\002\181\000\000\002\181\000\000\000\000\002\181\b\253\002\181\002\181\002\181\b\253\002\181\002\181\002\181\000\000\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\181\000\000\002\181\000\000\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\181\000\000\000\000\002\181\000\000\000\000\000\000\000\000\002\181\000\000\002\181\002\181\000\000\000\000\000\000\000\000\002\181\002\181\002\181\000\000\000\000\000\000\000\000\000\000\000\000\002\181\002\181\011Z\002\181\002\181\002\181\002\181\002\181\002\181\000\000\000\000\002\181\000\000\002\181\002\181\000\000\000\000\000\000\000\000\b\245\000\000\002\181\002\181\002\181\000\000\002\181\002\181\002\181\000\000\002\181\000\000\000\000\000\000\002\181\000\000\002\181\002\181\000\000\002\181\002\181\002\181\002\181\002\181\002\181\000\000\000\000\002\181\002\181\002\181\b\245\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\209\002\209\000\000\000\000\000\000\002\209\000\000\014^\002\209\000\000\b\245\002\209\000\000\002\209\000\000\000\000\002\209\b\245\002\209\002\209\002\209\b\245\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\209\000\000\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\209\000\000\000\000\002\209\000\000\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\000\000\000\000\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\209\002\209\002\209\002\209\002\209\000\000\000\000\002\209\000\000\002\209\002\209\000\000\000\000\000\000\000\000\000\238\000\000\002\209\002\209\002\209\000\000\002\209\002\209\002\209\000\000\002\209\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\n\026\002\209\002\209\002\209\002\209\002\209\000\000\000\000\002\209\002\209\n.\b\193\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\205\002\205\000\000\000\000\000\000\002\205\000\000\b\193\002\205\000\000\006J\002\205\000\000\002\205\000\000\000\000\011B\b\193\002\205\002\205\002\205\b\193\002\205\002\205\002\205\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\011\194\002\205\000\000\002\205\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\002\205\002\205\000\000\000\000\002\205\000\000\000\000\000\000\000\000\002\205\000\000\002\205\002\205\000\000\000\000\000\000\000\000\002\205\002\205\002\205\000\000\000\000\000\000\000\000\000\000\000\000\002\205\002\205\011Z\011\218\002\205\002\205\002\205\002\205\002\205\000\000\000\000\002\205\000\000\002\205\002\205\000\000\000\000\000\000\000\000\000\238\000\000\002\205\002\205\002\205\000\000\002\205\002\205\002\205\000\000\002\205\000\000\000\000\000\000\002\205\000\000\002\205\002\205\000\000\002\205\002\205\002\205\002\205\002\205\002\205\000\000\000\000\002\205\002\205\002\205\017F\000\000\000\000\000\000\002\205\002\205\002\205\002\205\002\241\002\241\000\000\000\000\000\000\002\241\000\000\014\"\002\241\000\000\014.\002\241\000\000\002\241\000\000\000\000\002\241\014:\002\241\002\241\002\241\014F\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\241\000\000\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\000\000\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\000\000\000\000\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\000\000\002\241\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\000\000\002\241\002\241\002\241\000\000\002\241\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\n\026\002\241\002\241\002\241\002\241\002\241\007\221\000\000\002\241\002\241\n.\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\237\002\237\000\000\000\000\000\000\002\237\007\221\000\000\002\237\000\000\007\221\002\237\000\000\002\237\000\000\000\000\002\237\000\000\002\237\002\237\002\237\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\000\000\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\000\000\000\238\000\000\000\000\002\237\000\000\002\237\002\237\000\000\000\000\000\000\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\011Z\002\237\002\237\002\237\002\237\002\237\002\237\000\000\007\221\002\237\000\000\002\237\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\000\000\002\237\002\237\002\237\000\000\002\237\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\002\237\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\177\002\177\000\000\000\000\000\000\002\177\000\000\000\000\002\177\000\000\000\000\002\177\000\000\002\177\000\000\000\000\002\177\000\000\002\177\002\177\002\177\000\000\002\177\002\177\002\177\000\000\000\000\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\177\000\000\002\177\000\000\000\000\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\177\000\000\000\000\002\177\000\000\000\000\000\000\000\000\002\177\000\000\002\177\002\177\000\000\000\000\000\000\000\000\002\177\002\177\002\177\000\000\000\000\000\000\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\177\002\177\002\177\002\177\002\177\000\000\000\000\002\177\000\000\002\177\002\177\000\000\000\000\000\000\000\000\000\000\000\000\002\177\002\177\002\177\000\000\002\177\002\177\002\177\000\000\002\177\000\000\000\000\000\000\002\177\000\000\002\177\002\177\000\000\n\026\002\177\002\177\002\177\002\177\002\177\000\000\000\000\002\177\002\177\n.\000\000\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\173\002\173\000\000\000\000\000\000\002\173\000\000\000\000\002\173\000\000\000\000\002\173\000\000\002\173\000\000\000\000\002\173\000\000\002\173\002\173\002\173\000\000\002\173\002\173\002\173\000\000\000\000\000\000\000\000\000\000\002\173\002\173\002\173\002\173\002\173\000\000\002\173\000\000\000\000\000\000\000\000\000\000\002\173\002\173\002\173\002\173\002\173\000\000\000\000\002\173\000\000\000\000\000\000\000\000\002\173\000\000\002\173\002\173\000\000\000\000\000\000\000\000\002\173\002\173\002\173\000\000\000\000\000\000\000\000\000\000\000\000\002\173\002\173\011Z\002\173\002\173\002\173\002\173\002\173\002\173\000\000\000\000\002\173\000\000\002\173\002\173\000\000\000\000\000\000\000\000\000\000\000\000\002\173\002\173\002\173\000\000\002\173\002\173\002\173\000\000\002\173\000\000\000\000\000\000\002\173\000\000\002\173\002\173\000\000\002\173\002\173\002\173\002\173\002\173\002\173\000\000\000\000\002\173\002\173\002\173\000\000\000\000\000\000\000\000\002\173\002\173\002\173\002\173\002\201\002\201\000\000\000\000\000\000\002\201\000\000\000\000\002\201\000\000\000\000\002\201\000\000\002\201\000\000\000\000\002\201\000\000\002\201\002\201\002\201\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\201\000\000\002\201\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\201\000\000\000\000\002\201\000\000\000\000\000\000\000\000\002\201\000\000\002\201\002\201\000\000\000\000\000\000\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\201\002\201\002\201\002\201\002\201\000\000\000\000\002\201\000\000\002\201\002\201\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\000\000\002\201\002\201\002\201\000\000\002\201\000\000\000\000\000\000\002\201\000\000\002\201\002\201\000\000\n\026\002\201\002\201\002\201\002\201\002\201\000\000\000\000\002\201\002\201\n.\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\197\002\197\000\000\000\000\000\000\002\197\000\000\000\000\002\197\000\000\000\000\002\197\000\000\002\197\000\000\000\000\011B\000\000\002\197\002\197\002\197\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\011\194\002\197\000\000\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\002\197\002\197\000\000\000\000\002\197\000\000\000\000\000\000\000\000\002\197\000\000\002\197\002\197\000\000\000\000\000\000\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\000\000\000\000\002\197\002\197\011Z\011\218\002\197\002\197\002\197\002\197\002\197\000\000\000\000\002\197\000\000\002\197\002\197\000\000\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\000\000\002\197\002\197\002\197\000\000\002\197\000\000\000\000\000\000\002\197\000\000\002\197\002\197\000\000\002\197\002\197\002\197\002\197\002\197\002\197\000\000\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\002\197\002\197\002\197\002\197\002\193\002\193\000\000\000\000\000\000\002\193\000\000\000\000\002\193\000\000\000\000\002\193\000\000\002\193\000\000\000\000\002\193\000\000\002\193\002\193\002\193\000\000\002\193\002\193\002\193\000\000\000\000\000\000\000\000\000\000\002\193\002\193\002\193\002\193\002\193\000\000\002\193\000\000\000\000\000\000\000\000\000\000\002\193\002\193\002\193\002\193\002\193\000\000\000\000\002\193\000\000\000\000\000\000\000\000\002\193\000\000\002\193\002\193\000\000\000\000\000\000\000\000\002\193\002\193\002\193\000\000\000\000\000\000\000\000\000\000\000\000\002\193\002\193\002\193\002\193\002\193\002\193\002\193\002\193\002\193\000\000\000\000\002\193\000\000\002\193\002\193\000\000\000\000\000\000\000\000\000\000\000\000\002\193\002\193\002\193\000\000\002\193\002\193\002\193\000\000\002\193\000\000\000\000\000\000\002\193\000\000\002\193\002\193\000\000\n\026\002\193\002\193\002\193\002\193\002\193\000\000\000\000\002\193\002\193\n.\000\000\000\000\000\000\000\000\002\193\002\193\002\193\002\193\002\189\002\189\000\000\000\000\000\000\002\189\000\000\000\000\002\189\000\000\000\000\002\189\000\000\002\189\000\000\000\000\011B\000\000\002\189\002\189\002\189\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\011\194\002\189\000\000\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\002\189\000\000\000\000\002\189\000\000\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\000\000\000\000\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\000\000\000\000\002\189\002\189\011Z\011\218\002\189\002\189\002\189\002\189\002\189\000\000\000\000\002\189\000\000\002\189\002\189\000\000\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\000\000\002\189\002\189\002\189\000\000\002\189\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\002\189\002\189\002\189\002\189\002\189\002\189\000\000\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\003\017\003\017\000\000\000\000\000\000\003\017\000\000\000\000\003\017\000\000\000\000\003\017\000\000\003\017\000\000\000\000\003\017\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\000\000\000\000\003\017\000\000\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\000\000\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\n\026\003\017\003\017\003\017\003\017\003\017\000\000\000\000\003\017\003\017\n.\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\r\003\r\000\000\000\000\000\000\003\r\000\000\000\000\003\r\000\000\000\000\003\r\000\000\003\r\000\000\000\000\011B\000\000\003\r\003\r\003\r\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003\r\000\000\000\000\000\000\000\000\000\000\003\r\003\r\012:\012R\003\r\000\000\000\000\003\r\000\000\000\000\000\000\000\000\003\r\000\000\012j\003\r\000\000\000\000\000\000\000\000\003\r\003\r\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003\r\003\r\011Z\011\218\012\130\012\154\012\202\003\r\003\r\000\000\000\000\003\r\000\000\003\r\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003\r\003\r\012\250\000\000\003\r\003\r\003\r\000\000\003\r\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\003\r\003\r\003\r\012\178\003\r\003\r\000\000\000\000\003\r\r\018\003\r\000\000\000\000\000\000\000\000\003\r\003\r\r*\rB\002\225\002\225\000\000\000\000\000\000\002\225\000\000\000\000\002\225\000\000\000\000\002\225\000\000\002\225\000\000\000\000\002\225\000\000\002\225\002\225\002\225\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\225\000\000\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\000\000\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\000\000\000\000\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\000\000\002\225\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\000\000\002\225\002\225\002\225\000\000\002\225\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\n\026\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\002\225\n.\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\221\002\221\000\000\000\000\000\000\002\221\000\000\000\000\002\221\000\000\000\000\002\221\000\000\002\221\000\000\000\000\011B\000\000\002\221\002\221\002\221\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\011\194\002\221\000\000\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\002\221\000\000\000\000\002\221\000\000\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\000\000\000\000\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\011Z\011\218\002\221\002\221\002\221\002\221\002\221\000\000\000\000\002\221\000\000\002\221\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\000\000\002\221\002\221\002\221\000\000\002\221\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\002\221\002\221\002\221\002\221\002\221\002\221\000\000\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\002\217\002\217\000\000\000\000\000\000\002\217\000\000\000\000\002\217\000\000\000\000\002\217\000\000\002\217\000\000\000\000\002\217\000\000\002\217\002\217\002\217\000\000\002\217\002\217\002\217\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\002\217\002\217\000\000\002\217\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\002\217\002\217\000\000\000\000\002\217\000\000\000\000\000\000\000\000\002\217\000\000\002\217\002\217\000\000\000\000\000\000\000\000\002\217\002\217\002\217\000\000\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\002\217\002\217\002\217\002\217\002\217\002\217\000\000\000\000\002\217\000\000\002\217\002\217\000\000\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\000\000\002\217\002\217\002\217\000\000\002\217\000\000\000\000\000\000\002\217\000\000\002\217\002\217\000\000\n\026\002\217\002\217\002\217\002\217\002\217\000\000\000\000\002\217\002\217\n.\000\000\000\000\000\000\000\000\002\217\002\217\002\217\002\217\002\213\002\213\000\000\000\000\000\000\002\213\000\000\000\000\002\213\000\000\000\000\002\213\000\000\002\213\000\000\000\000\011B\000\000\002\213\002\213\002\213\000\000\002\213\002\213\002\213\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\011\194\002\213\000\000\002\213\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\002\213\002\213\000\000\000\000\002\213\000\000\000\000\000\000\000\000\002\213\000\000\002\213\002\213\000\000\000\000\000\000\000\000\002\213\002\213\002\213\000\000\000\000\000\000\000\000\000\000\000\000\002\213\002\213\011Z\011\218\002\213\002\213\002\213\002\213\002\213\000\000\000\000\002\213\000\000\002\213\002\213\000\000\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\000\000\002\213\002\213\002\213\000\000\002\213\000\000\000\000\000\000\002\213\000\000\002\213\002\213\000\000\002\213\002\213\002\213\002\213\002\213\002\213\000\000\000\000\002\213\002\213\002\213\000\000\000\000\000\000\000\000\002\213\002\213\002\213\002\213\003\001\003\001\000\000\000\000\000\000\003\001\000\000\000\000\003\001\000\000\000\000\003\001\000\000\003\001\000\000\000\000\003\001\000\000\003\001\003\001\003\001\000\000\003\001\003\001\003\001\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\003\001\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\000\000\000\000\000\000\000\000\003\001\000\000\003\001\003\001\000\000\000\000\000\000\000\000\003\001\003\001\003\001\000\000\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\000\000\003\001\003\001\000\000\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\000\000\003\001\003\001\003\001\000\000\003\001\000\000\000\000\000\000\003\001\000\000\003\001\003\001\000\000\n\026\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\003\001\n.\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\002\253\002\253\000\000\000\000\000\000\002\253\000\000\000\000\002\253\000\000\000\000\002\253\000\000\002\253\000\000\000\000\011B\000\000\002\253\002\253\002\253\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\002\253\000\000\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\012:\012R\002\253\000\000\000\000\002\253\000\000\000\000\000\000\000\000\002\253\000\000\002\253\002\253\000\000\000\000\000\000\000\000\002\253\002\253\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\253\002\253\011Z\011\218\012\130\012\154\002\253\002\253\002\253\000\000\000\000\002\253\000\000\002\253\002\253\000\000\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\000\000\002\253\002\253\002\253\000\000\002\253\000\000\000\000\000\000\002\253\000\000\002\253\002\253\000\000\002\253\002\253\002\253\012\178\002\253\002\253\000\000\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\169\002\169\000\000\000\000\000\000\002\169\000\000\000\000\002\169\000\000\000\000\002\169\000\000\002\169\000\000\000\000\002\169\000\000\002\169\002\169\002\169\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\002\169\000\000\002\169\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\002\169\000\000\000\000\002\169\000\000\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\000\000\000\000\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\002\169\002\169\002\169\002\169\002\169\000\000\000\000\002\169\000\000\002\169\002\169\000\000\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\000\000\002\169\002\169\002\169\000\000\002\169\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\n\026\002\169\002\169\002\169\002\169\002\169\000\000\000\000\002\169\002\169\n.\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\002\165\002\165\000\000\000\000\000\000\002\165\000\000\000\000\002\165\000\000\000\000\002\165\000\000\002\165\000\000\000\000\011B\000\000\002\165\002\165\002\165\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\011\194\002\165\000\000\002\165\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\000\000\000\000\000\000\000\000\002\165\000\000\002\165\002\165\000\000\000\000\000\000\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\000\000\000\000\002\165\002\165\011Z\011\218\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\000\000\002\165\002\165\000\000\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\000\000\002\165\002\165\002\165\000\000\002\165\000\000\000\000\000\000\002\165\000\000\002\165\002\165\000\000\002\165\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\161\002\161\000\000\000\000\000\000\002\161\000\000\000\000\002\161\000\000\000\000\002\161\000\000\002\161\000\000\000\000\002\161\000\000\002\161\002\161\002\161\000\000\002\161\002\161\002\161\000\000\000\000\000\000\000\000\000\000\002\161\002\161\002\161\002\161\002\161\000\000\002\161\000\000\000\000\000\000\000\000\000\000\002\161\002\161\002\161\002\161\002\161\000\000\000\000\002\161\000\000\000\000\000\000\000\000\002\161\000\000\002\161\002\161\000\000\000\000\000\000\000\000\002\161\002\161\002\161\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\161\002\161\002\161\002\161\002\161\002\161\002\161\002\161\000\000\000\000\002\161\000\000\002\161\002\161\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\161\002\161\000\000\002\161\002\161\002\161\000\000\002\161\000\000\000\000\000\000\002\161\000\000\002\161\002\161\000\000\n\026\002\161\002\161\002\161\002\161\002\161\000\000\000\000\002\161\002\161\n.\000\000\000\000\000\000\000\000\002\161\002\161\002\161\002\161\002\157\002\157\000\000\000\000\000\000\002\157\000\000\000\000\002\157\000\000\000\000\002\157\000\000\002\157\000\000\000\000\011B\000\000\002\157\002\157\002\157\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\002\157\000\000\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\012:\012R\002\157\000\000\000\000\002\157\000\000\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\000\000\000\000\000\002\157\002\157\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\011Z\011\218\012\130\012\154\002\157\002\157\002\157\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\000\000\002\157\002\157\002\157\000\000\002\157\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\002\157\002\157\002\157\012\178\002\157\002\157\000\000\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\003Q\003Q\000\000\000\000\000\000\003Q\000\000\000\000\003Q\000\000\000\000\003Q\000\000\003Q\000\000\000\000\003Q\000\000\003Q\003Q\003Q\000\000\003Q\003Q\003Q\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003Q\000\000\003Q\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003Q\000\000\000\000\003Q\000\000\000\000\000\000\000\000\003Q\000\000\003Q\003Q\000\000\000\000\000\000\000\000\003Q\003Q\003Q\000\000\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003Q\003Q\003Q\003Q\003Q\000\000\000\000\003Q\000\000\003Q\003Q\000\000\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\000\000\003Q\003Q\003Q\000\000\003Q\000\000\000\000\000\000\003Q\000\000\003Q\003Q\000\000\n\026\003Q\003Q\003Q\003Q\003Q\000\000\000\000\003Q\003Q\n.\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003M\003M\000\000\000\000\000\000\003M\000\000\000\000\003M\000\000\000\000\003M\000\000\003M\000\000\000\000\011B\000\000\003M\003M\003M\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\003M\000\000\003M\000\000\000\000\000\000\000\000\000\000\003M\003M\012:\012R\003M\000\000\000\000\003M\000\000\000\000\000\000\000\000\003M\000\000\003M\003M\000\000\000\000\000\000\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\000\000\000\000\003M\003M\011Z\011\218\012\130\003M\003M\003M\003M\000\000\000\000\003M\000\000\003M\003M\000\000\000\000\000\000\000\000\000\000\000\000\003M\003M\003M\000\000\003M\003M\003M\000\000\003M\000\000\000\000\000\000\003M\000\000\003M\003M\000\000\003M\003M\003M\012\178\003M\003M\000\000\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\003M\003M\003M\003M\002\153\002\153\000\000\000\000\000\000\002\153\000\000\000\000\002\153\000\000\000\000\002\153\000\000\002\153\000\000\000\000\002\153\000\000\002\153\002\153\002\153\000\000\002\153\002\153\002\153\000\000\000\000\000\000\000\000\000\000\002\153\002\153\002\153\002\153\002\153\000\000\002\153\000\000\000\000\000\000\000\000\000\000\002\153\002\153\002\153\002\153\002\153\000\000\000\000\002\153\000\000\000\000\000\000\000\000\002\153\000\000\002\153\002\153\000\000\000\000\000\000\000\000\002\153\002\153\002\153\000\000\000\000\000\000\000\000\000\000\000\000\002\153\002\153\002\153\002\153\002\153\002\153\002\153\002\153\002\153\000\000\000\000\002\153\000\000\002\153\002\153\000\000\000\000\000\000\000\000\000\000\000\000\002\153\002\153\002\153\000\000\002\153\002\153\002\153\000\000\002\153\000\000\000\000\000\000\002\153\000\000\002\153\002\153\000\000\n\026\002\153\002\153\002\153\002\153\002\153\000\000\000\000\002\153\002\153\n.\000\000\000\000\000\000\000\000\002\153\002\153\002\153\002\153\002\149\002\149\000\000\000\000\000\000\002\149\000\000\000\000\002\149\000\000\000\000\002\149\000\000\002\149\000\000\000\000\011B\000\000\002\149\002\149\002\149\000\000\002\149\002\149\002\149\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\002\149\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002\149\002\149\012:\012R\002\149\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002\149\000\000\002\149\002\149\000\000\000\000\000\000\000\000\002\149\002\149\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\149\002\149\011Z\011\218\012\130\012\154\002\149\002\149\002\149\000\000\000\000\002\149\000\000\002\149\002\149\000\000\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\000\000\002\149\002\149\002\149\000\000\002\149\000\000\000\000\000\000\002\149\000\000\002\149\002\149\000\000\002\149\002\149\002\149\012\178\002\149\002\149\000\000\000\000\002\149\002\149\002\149\000\000\000\000\000\000\000\000\002\149\002\149\002\149\002\149\003\t\003\t\000\000\000\000\000\000\003\t\000\000\000\000\003\t\000\000\000\000\003\t\000\000\003\t\000\000\000\000\003\t\000\000\003\t\003\t\003\t\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\t\000\000\003\t\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\t\000\000\000\000\003\t\000\000\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\t\003\t\003\t\003\t\003\t\000\000\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\000\000\003\t\003\t\003\t\000\000\003\t\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\n\026\003\t\003\t\003\t\003\t\003\t\000\000\000\000\003\t\003\t\n.\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\005\003\005\000\000\000\000\000\000\003\005\000\000\000\000\003\005\000\000\000\000\003\005\000\000\003\005\000\000\000\000\011B\000\000\003\005\003\005\003\005\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\003\005\000\000\003\005\000\000\000\000\000\000\000\000\000\000\003\005\003\005\012:\012R\003\005\000\000\000\000\003\005\000\000\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\003\005\003\005\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\011Z\011\218\012\130\012\154\003\005\003\005\003\005\000\000\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\000\000\003\005\003\005\003\005\000\000\003\005\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\003\005\003\005\003\005\012\178\003\005\003\005\000\000\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\002\249\002\249\000\000\000\000\000\000\002\249\000\000\000\000\002\249\000\000\000\000\002\249\000\000\002\249\000\000\000\000\002\249\000\000\002\249\002\249\002\249\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\000\000\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\000\000\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\n\026\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\002\249\n.\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\245\002\245\000\000\000\000\000\000\002\245\000\000\000\000\002\245\000\000\000\000\002\245\000\000\002\245\000\000\000\000\011B\000\000\002\245\002\245\002\245\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\002\245\000\000\002\245\000\000\000\000\000\000\000\000\000\000\002\245\002\245\012:\012R\002\245\000\000\000\000\002\245\000\000\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\000\000\000\000\000\000\002\245\002\245\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\011Z\011\218\012\130\012\154\002\245\002\245\002\245\000\000\000\000\002\245\000\000\002\245\002\245\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\000\000\002\245\002\245\002\245\000\000\002\245\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\002\245\002\245\002\245\012\178\002\245\002\245\000\000\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\003\025\003\025\000\000\000\000\000\000\003\025\000\000\000\000\003\025\000\000\000\000\003\025\000\000\003\025\000\000\000\000\003\025\000\000\003\025\003\025\003\025\000\000\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\025\000\000\003\025\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\025\000\000\000\000\003\025\000\000\000\000\000\000\000\000\003\025\000\000\003\025\003\025\000\000\000\000\000\000\000\000\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\025\003\025\003\025\003\025\003\025\000\000\000\000\003\025\000\000\003\025\003\025\000\000\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\000\000\003\025\003\025\003\025\000\000\003\025\000\000\000\000\000\000\003\025\000\000\003\025\003\025\000\000\n\026\003\025\003\025\003\025\003\025\003\025\000\000\000\000\003\025\003\025\n.\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\021\003\021\000\000\000\000\000\000\003\021\000\000\000\000\003\021\000\000\000\000\003\021\000\000\003\021\000\000\000\000\011B\000\000\003\021\003\021\003\021\000\000\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003\021\000\000\000\000\000\000\000\000\000\000\003\021\003\021\012:\012R\003\021\000\000\000\000\003\021\000\000\000\000\000\000\000\000\003\021\000\000\012j\003\021\000\000\000\000\000\000\000\000\003\021\003\021\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003\021\003\021\011Z\011\218\012\130\012\154\012\202\003\021\003\021\000\000\000\000\003\021\000\000\003\021\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003\021\003\021\012\250\000\000\003\021\003\021\003\021\000\000\003\021\000\000\000\000\000\000\003\021\000\000\003\021\003\021\000\000\003\021\003\021\003\021\012\178\003\021\003\021\000\000\000\000\003\021\r\018\003\021\000\000\000\000\000\000\000\000\003\021\003\021\r*\rB\003!\003!\000\000\000\000\000\000\003!\000\000\000\000\003!\000\000\000\000\003!\000\000\003!\000\000\000\000\003!\000\000\003!\003!\003!\000\000\003!\003!\003!\000\000\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003!\000\000\003!\000\000\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003!\000\000\000\000\003!\000\000\000\000\000\000\000\000\003!\000\000\003!\003!\000\000\000\000\000\000\000\000\003!\003!\003!\000\000\000\000\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003!\003!\003!\003!\003!\000\000\000\000\003!\000\000\003!\003!\000\000\000\000\000\000\000\000\000\000\000\000\003!\003!\003!\000\000\003!\003!\003!\000\000\003!\000\000\000\000\000\000\003!\000\000\003!\003!\000\000\n\026\003!\003!\003!\003!\003!\000\000\000\000\003!\003!\n.\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003\029\003\029\000\000\000\000\000\000\003\029\000\000\000\000\003\029\000\000\000\000\003\029\000\000\003\029\000\000\000\000\011B\000\000\003\029\003\029\003\029\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\003\029\000\000\003\029\000\000\000\000\000\000\000\000\000\000\003\029\003\029\012:\012R\003\029\000\000\000\000\003\029\000\000\000\000\000\000\000\000\003\029\000\000\012j\003\029\000\000\000\000\000\000\000\000\003\029\003\029\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003\029\003\029\011Z\011\218\012\130\012\154\012\202\003\029\003\029\000\000\000\000\003\029\000\000\003\029\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003\029\003\029\012\250\000\000\003\029\003\029\003\029\000\000\003\029\000\000\000\000\000\000\003\029\000\000\003\029\003\029\000\000\003\029\003\029\003\029\012\178\003\029\003\029\000\000\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\003\029\003\029\r*\rB\003)\003)\000\000\000\000\000\000\003)\000\000\000\000\003)\000\000\000\000\003)\000\000\003)\000\000\000\000\003)\000\000\003)\003)\003)\000\000\003)\003)\003)\000\000\000\000\000\000\000\000\000\000\003)\003)\003)\003)\003)\000\000\003)\000\000\000\000\000\000\000\000\000\000\003)\003)\003)\003)\003)\000\000\000\000\003)\000\000\000\000\000\000\000\000\003)\000\000\003)\003)\000\000\000\000\000\000\000\000\003)\003)\003)\000\000\000\000\000\000\000\000\000\000\000\000\003)\003)\003)\003)\003)\003)\003)\003)\003)\000\000\000\000\003)\000\000\003)\003)\000\000\000\000\000\000\000\000\000\000\000\000\003)\003)\003)\000\000\003)\003)\003)\000\000\003)\000\000\000\000\000\000\003)\000\000\003)\003)\000\000\n\026\003)\003)\003)\003)\003)\000\000\000\000\003)\003)\n.\000\000\000\000\000\000\000\000\003)\003)\003)\003)\003%\003%\000\000\000\000\000\000\003%\000\000\000\000\003%\000\000\000\000\003%\000\000\003%\000\000\000\000\011B\000\000\003%\003%\003%\000\000\003%\003%\003%\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\003%\000\000\003%\000\000\000\000\000\000\000\000\000\000\003%\003%\012:\012R\003%\000\000\000\000\003%\000\000\000\000\000\000\000\000\003%\000\000\012j\003%\000\000\000\000\000\000\000\000\003%\003%\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003%\003%\011Z\011\218\012\130\012\154\012\202\003%\003%\000\000\000\000\003%\000\000\003%\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003%\003%\012\250\000\000\003%\003%\003%\000\000\003%\000\000\000\000\000\000\003%\000\000\003%\003%\000\000\003%\003%\003%\012\178\003%\003%\000\000\000\000\003%\003%\003%\000\000\000\000\000\000\000\000\003%\003%\r*\rB\n\021\n\021\000\000\000\000\000\000\n\021\000\000\000\000\n\021\000\000\000\000\n\021\000\000\n\021\000\000\000\000\n\021\000\000\n\021\n\021\n\021\000\000\n\021\n\021\n\021\000\000\000\000\000\000\000\000\000\000\n\021\n\021\n\021\n\021\n\021\000\000\n\021\000\000\000\000\000\000\000\000\000\000\n\021\n\021\n\021\n\021\n\021\000\000\000\000\n\021\000\000\000\000\000\000\000\000\n\021\000\000\n\021\n\021\000\000\000\000\000\000\000\000\n\021\n\021\n\021\000\000\000\000\000\000\000\000\000\000\000\000\n\021\n\021\n\021\n\021\n\021\n\021\n\021\n\021\n\021\000\000\000\000\n\021\000\000\n\021\n\021\000\000\000\000\000\000\000\000\000\000\000\000\n\021\n\021\n\021\000\000\n\021\n\021\n\021\000\000\n\021\000\000\000\000\000\000\n\021\000\000\n\021\n\021\000\000\n\026\n\021\n\021\n\021\n\021\n\021\000\000\000\000\n\021\n\021\n.\000\000\000\000\000\000\000\000\n\021\n\021\n\021\n\021\n\017\n\017\000\000\000\000\000\000\n\017\000\000\000\000\n\017\000\000\000\000\n\017\000\000\n\017\000\000\000\000\011B\000\000\n\017\n\017\n\017\000\000\n\017\n\017\n\017\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\n\017\000\000\000\000\000\000\000\000\000\000\n\017\n\017\012:\012R\n\017\000\000\000\000\n\017\000\000\000\000\000\000\000\000\n\017\000\000\012j\n\017\000\000\000\000\000\000\000\000\n\017\n\017\000\238\000\000\000\000\000\000\000\000\000\000\000\000\n\017\n\017\011Z\011\218\012\130\012\154\012\202\n\017\n\017\000\000\000\000\n\017\000\000\n\017\012\226\000\000\000\000\000\000\000\000\000\000\000\000\n\017\n\017\012\250\000\000\n\017\n\017\n\017\000\000\n\017\000\000\000\000\000\000\n\017\000\000\n\017\n\017\000\000\n\017\n\017\n\017\012\178\n\017\n\017\000\000\000\000\n\017\r\018\n\017\000\000\000\000\000\000\000\000\n\017\n\017\r*\rB\0031\0031\000\000\000\000\000\000\0031\000\000\000\000\0031\000\000\000\000\0031\000\000\0031\000\000\000\000\0031\000\000\0031\0031\0031\000\000\0031\0031\0031\000\000\000\000\000\000\000\000\000\000\0031\0031\0031\0031\0031\000\000\0031\000\000\000\000\000\000\000\000\000\000\0031\0031\0031\0031\0031\000\000\000\000\0031\000\000\000\000\000\000\000\000\0031\000\000\0031\0031\000\000\000\000\000\000\000\000\0031\0031\0031\000\000\000\000\000\000\000\000\000\000\000\000\0031\0031\0031\0031\0031\0031\0031\0031\0031\000\000\000\000\0031\000\000\0031\0031\000\000\000\000\000\000\000\000\000\000\000\000\0031\0031\0031\000\000\0031\0031\0031\000\000\0031\000\000\000\000\000\000\0031\000\000\0031\0031\000\000\n\026\0031\0031\0031\0031\0031\000\000\000\000\0031\0031\n.\000\000\000\000\000\000\000\000\0031\0031\0031\0031\003-\003-\000\000\000\000\000\000\003-\000\000\000\000\003-\000\000\000\000\003-\000\000\003-\000\000\000\000\011B\000\000\003-\003-\003-\000\000\003-\003-\003-\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003-\000\000\000\000\000\000\000\000\000\000\003-\003-\012:\012R\003-\000\000\000\000\003-\000\000\000\000\000\000\000\000\003-\000\000\012j\003-\000\000\000\000\000\000\000\000\003-\003-\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003-\003-\011Z\011\218\012\130\012\154\012\202\003-\003-\000\000\000\000\003-\000\000\003-\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003-\003-\012\250\000\000\003-\003-\003-\000\000\003-\000\000\000\000\000\000\003-\000\000\003-\003-\000\000\rZ\003-\rr\012\178\003-\003-\000\000\000\000\003-\r\018\003-\000\000\000\000\000\000\000\000\003-\003-\r*\rB\n\t\n\t\000\000\000\000\000\000\n\t\000\000\000\000\n\t\000\000\000\000\n\t\000\000\n\t\000\000\000\000\011B\000\000\n\t\n\t\n\t\000\000\n\t\n\t\n\t\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\n\t\000\000\000\000\000\000\000\000\000\000\n\t\n\t\012:\012R\n\t\000\000\000\000\n\t\000\000\000\000\000\000\000\000\n\t\000\000\012j\n\t\000\000\000\000\000\000\000\000\n\t\n\t\000\238\000\000\000\000\000\000\000\000\000\000\000\000\n\t\n\t\011Z\011\218\012\130\012\154\012\202\n\t\n\t\000\000\000\000\n\t\000\000\n\t\012\226\000\000\000\000\000\000\000\000\000\000\000\000\n\t\n\t\012\250\000\000\n\t\n\t\n\t\000\000\n\t\000\000\000\000\000\000\n\t\000\000\n\t\n\t\000\000\n\t\n\t\n\t\012\178\n\t\n\t\000\000\000\000\n\t\r\018\n\t\000\000\000\000\000\000\000\000\n\t\n\t\r*\rB\003\129\003\129\000\000\000\000\000\000\003\129\000\000\000\000\003\129\000\000\000\000\003\129\000\000\003\129\000\000\000\000\003\129\000\000\003\129\003\129\003\129\000\000\003\129\003\129\003\129\000\000\000\000\000\000\000\000\000\000\003\129\003\129\003\129\003\129\003\129\000\000\003\129\000\000\000\000\000\000\000\000\000\000\003\129\003\129\003\129\003\129\003\129\000\000\000\000\003\129\000\000\000\000\000\000\000\000\003\129\000\000\003\129\003\129\000\000\000\000\000\000\000\000\003\129\003\129\003\129\000\000\000\000\000\000\000\000\000\000\000\000\003\129\003\129\003\129\003\129\003\129\003\129\003\129\003\129\003\129\000\000\000\000\003\129\000\000\003\129\003\129\000\000\000\000\000\000\000\000\000\000\000\000\003\129\003\129\003\129\000\000\003\129\003\129\003\129\000\000\003\129\000\000\000\000\000\000\003\129\000\000\003\129\003\129\000\000\n\026\003\129\003\129\003\129\003\129\003\129\000\000\000\000\003\129\003\129\n.\000\000\000\000\000\000\000\000\003\129\003\129\003\129\003\129\003}\003}\000\000\000\000\000\000\003}\000\000\000\000\003}\000\000\000\000\003}\000\000\003}\000\000\000\000\011B\000\000\003}\003}\003}\000\000\003}\003}\003}\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003}\000\000\000\000\000\000\000\000\000\000\003}\003}\012:\012R\003}\000\000\000\000\003}\000\000\000\000\000\000\000\000\003}\000\000\012j\003}\000\000\000\000\000\000\000\000\003}\003}\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003}\003}\011Z\011\218\012\130\012\154\012\202\003}\003}\000\000\000\000\003}\000\000\003}\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003}\003}\012\250\000\000\003}\003}\003}\000\000\003}\000\000\000\000\000\000\003}\000\000\003}\003}\000\000\rZ\003}\rr\012\178\003}\003}\000\000\000\000\003}\r\018\003}\000\000\000\000\000\000\000\000\003}\003}\r*\rB\003\161\003\161\000\000\000\000\000\000\003\161\000\000\000\000\003\161\000\000\000\000\003\161\000\000\003\161\000\000\000\000\003\161\000\000\003\161\003\161\003\161\000\000\003\161\003\161\003\161\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\161\000\000\003\161\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\161\000\000\000\000\003\161\000\000\000\000\000\000\000\000\003\161\000\000\003\161\003\161\000\000\000\000\000\000\000\000\003\161\003\161\003\161\000\000\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\161\003\161\003\161\003\161\003\161\000\000\000\000\003\161\000\000\003\161\003\161\000\000\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\000\000\003\161\003\161\003\161\000\000\003\161\000\000\000\000\000\000\003\161\000\000\003\161\003\161\000\000\n\026\003\161\003\161\003\161\003\161\003\161\000\000\000\000\003\161\003\161\n.\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\157\003\157\000\000\000\000\000\000\003\157\000\000\000\000\003\157\000\000\000\000\003\157\000\000\003\157\000\000\000\000\011B\000\000\003\157\003\157\003\157\000\000\003\157\003\157\003\157\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003\157\000\000\000\000\000\000\000\000\000\000\003\157\003\157\012:\012R\003\157\000\000\000\000\003\157\000\000\000\000\000\000\000\000\003\157\000\000\012j\003\157\000\000\000\000\000\000\000\000\003\157\003\157\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003\157\003\157\011Z\011\218\012\130\012\154\012\202\003\157\003\157\000\000\000\000\003\157\000\000\003\157\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003\157\003\157\012\250\000\000\003\157\003\157\003\157\000\000\003\157\000\000\000\000\000\000\003\157\000\000\003\157\003\157\000\000\rZ\003\157\rr\012\178\003\157\003\157\000\000\000\000\003\157\r\018\003\157\000\000\000\000\000\000\000\000\003\157\003\157\r*\rB\003\145\003\145\000\000\000\000\000\000\003\145\000\000\000\000\003\145\000\000\000\000\003\145\000\000\003\145\000\000\000\000\003\145\000\000\003\145\003\145\003\145\000\000\003\145\003\145\003\145\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\145\000\000\003\145\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\145\000\000\000\000\003\145\000\000\000\000\000\000\000\000\003\145\000\000\003\145\003\145\000\000\000\000\000\000\000\000\003\145\003\145\003\145\000\000\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\145\003\145\003\145\003\145\003\145\000\000\000\000\003\145\000\000\003\145\003\145\000\000\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\145\000\000\003\145\003\145\003\145\000\000\003\145\000\000\000\000\000\000\003\145\000\000\003\145\003\145\000\000\n\026\003\145\003\145\003\145\003\145\003\145\000\000\000\000\003\145\003\145\n.\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\141\003\141\000\000\000\000\000\000\003\141\000\000\000\000\003\141\000\000\000\000\003\141\000\000\003\141\000\000\000\000\011B\000\000\003\141\003\141\003\141\000\000\003\141\003\141\003\141\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003\141\000\000\000\000\000\000\000\000\000\000\003\141\003\141\012:\012R\003\141\000\000\000\000\003\141\000\000\000\000\000\000\000\000\003\141\000\000\012j\003\141\000\000\000\000\000\000\000\000\003\141\003\141\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\011Z\011\218\012\130\012\154\012\202\003\141\003\141\000\000\000\000\003\141\000\000\003\141\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\012\250\000\000\003\141\003\141\003\141\000\000\003\141\000\000\000\000\000\000\003\141\000\000\003\141\003\141\000\000\rZ\003\141\rr\012\178\003\141\003\141\000\000\000\000\003\141\r\018\003\141\000\000\000\000\000\000\000\000\003\141\003\141\r*\rB\003i\003i\000\000\000\000\000\000\003i\000\000\000\000\003i\000\000\000\000\003i\000\000\003i\000\000\000\000\003i\000\000\003i\003i\003i\000\000\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003i\000\000\003i\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003i\000\000\000\000\003i\000\000\000\000\000\000\000\000\003i\000\000\003i\003i\000\000\000\000\000\000\000\000\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003i\003i\003i\003i\003i\000\000\000\000\003i\000\000\003i\003i\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\000\000\003i\003i\003i\000\000\003i\000\000\000\000\000\000\003i\000\000\003i\003i\000\000\n\026\003i\003i\003i\003i\003i\000\000\000\000\003i\003i\n.\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003e\003e\000\000\000\000\000\000\003e\000\000\000\000\003e\000\000\000\000\003e\000\000\003e\000\000\000\000\011B\000\000\003e\003e\003e\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003e\000\000\000\000\000\000\000\000\000\000\003e\003e\012:\012R\003e\000\000\000\000\003e\000\000\000\000\000\000\000\000\003e\000\000\012j\003e\000\000\000\000\000\000\000\000\003e\003e\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\011Z\011\218\012\130\012\154\012\202\003e\003e\000\000\000\000\003e\000\000\003e\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\012\250\000\000\003e\003e\003e\000\000\003e\000\000\000\000\000\000\003e\000\000\003e\003e\000\000\rZ\003e\rr\012\178\003e\003e\000\000\000\000\003e\r\018\003e\000\000\000\000\000\000\000\000\003e\003e\r*\rB\003y\003y\000\000\000\000\000\000\003y\000\000\000\000\003y\000\000\000\000\003y\000\000\003y\000\000\000\000\003y\000\000\003y\003y\003y\000\000\003y\003y\003y\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003y\000\000\003y\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003y\000\000\000\000\003y\000\000\000\000\000\000\000\000\003y\000\000\003y\003y\000\000\000\000\000\000\000\000\003y\003y\003y\000\000\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003y\003y\003y\003y\003y\000\000\000\000\003y\000\000\003y\003y\000\000\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\000\000\003y\003y\003y\000\000\003y\000\000\000\000\000\000\003y\000\000\003y\003y\000\000\n\026\003y\003y\003y\003y\003y\000\000\000\000\003y\003y\n.\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003u\003u\000\000\000\000\000\000\003u\000\000\000\000\003u\000\000\000\000\003u\000\000\003u\000\000\000\000\011B\000\000\003u\003u\003u\000\000\003u\003u\003u\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003u\000\000\000\000\000\000\000\000\000\000\003u\003u\012:\012R\003u\000\000\000\000\003u\000\000\000\000\000\000\000\000\003u\000\000\012j\003u\000\000\000\000\000\000\000\000\003u\003u\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\011Z\011\218\012\130\012\154\012\202\003u\003u\000\000\000\000\003u\000\000\003u\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\012\250\000\000\003u\003u\003u\000\000\003u\000\000\000\000\000\000\003u\000\000\003u\003u\000\000\rZ\003u\rr\012\178\003u\003u\000\000\000\000\003u\r\018\003u\000\000\000\000\000\000\000\000\003u\003u\r*\rB\003q\003q\000\000\000\000\000\000\003q\000\000\000\000\003q\000\000\000\000\003q\000\000\003q\000\000\000\000\003q\000\000\003q\003q\003q\000\000\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003q\000\000\003q\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003q\000\000\000\000\003q\000\000\000\000\000\000\000\000\003q\000\000\003q\003q\000\000\000\000\000\000\000\000\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003q\003q\003q\003q\003q\000\000\000\000\003q\000\000\003q\003q\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\000\000\003q\003q\003q\000\000\003q\000\000\000\000\000\000\003q\000\000\003q\003q\000\000\n\026\003q\003q\003q\003q\003q\000\000\000\000\003q\003q\n.\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003m\003m\000\000\000\000\000\000\003m\000\000\000\000\003m\000\000\000\000\003m\000\000\003m\000\000\000\000\011B\000\000\003m\003m\003m\000\000\003m\003m\003m\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003m\000\000\000\000\000\000\000\000\000\000\003m\003m\012:\012R\003m\000\000\000\000\003m\000\000\000\000\000\000\000\000\003m\000\000\012j\003m\000\000\000\000\000\000\000\000\003m\003m\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\011Z\011\218\012\130\012\154\012\202\003m\003m\000\000\000\000\003m\000\000\003m\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\012\250\000\000\003m\003m\003m\000\000\003m\000\000\000\000\000\000\003m\000\000\003m\003m\000\000\rZ\003m\rr\012\178\003m\003m\000\000\000\000\003m\r\018\003m\000\000\000\000\000\000\000\000\003m\003m\r*\rB\003\137\003\137\000\000\000\000\000\000\003\137\000\000\000\000\003\137\000\000\000\000\003\137\000\000\003\137\000\000\000\000\003\137\000\000\003\137\003\137\003\137\000\000\003\137\003\137\003\137\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\137\000\000\003\137\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\137\000\000\000\000\003\137\000\000\000\000\000\000\000\000\003\137\000\000\003\137\003\137\000\000\000\000\000\000\000\000\003\137\003\137\003\137\000\000\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\137\003\137\003\137\003\137\003\137\000\000\000\000\003\137\000\000\003\137\003\137\000\000\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\000\000\003\137\003\137\003\137\000\000\003\137\000\000\000\000\000\000\003\137\000\000\003\137\003\137\000\000\n\026\003\137\003\137\003\137\003\137\003\137\000\000\000\000\003\137\003\137\n.\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\133\003\133\000\000\000\000\000\000\003\133\000\000\000\000\003\133\000\000\000\000\003\133\000\000\003\133\000\000\000\000\011B\000\000\003\133\003\133\003\133\000\000\003\133\003\133\003\133\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003\133\000\000\000\000\000\000\000\000\000\000\003\133\003\133\012:\012R\003\133\000\000\000\000\003\133\000\000\000\000\000\000\000\000\003\133\000\000\012j\003\133\000\000\000\000\000\000\000\000\003\133\003\133\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\011Z\011\218\012\130\012\154\012\202\003\133\003\133\000\000\000\000\003\133\000\000\003\133\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\012\250\000\000\003\133\003\133\003\133\000\000\003\133\000\000\000\000\000\000\003\133\000\000\003\133\003\133\000\000\rZ\003\133\rr\012\178\003\133\003\133\000\000\000\000\003\133\r\018\003\133\000\000\000\000\000\000\000\000\003\133\003\133\r*\rB\003\169\003\169\000\000\000\000\000\000\003\169\000\000\000\000\003\169\000\000\000\000\003\169\000\000\003\169\000\000\000\000\003\169\000\000\003\169\003\169\003\169\000\000\003\169\003\169\003\169\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\169\000\000\003\169\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\169\000\000\000\000\003\169\000\000\000\000\000\000\000\000\003\169\000\000\003\169\003\169\000\000\000\000\000\000\000\000\003\169\003\169\003\169\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\169\003\169\003\169\003\169\003\169\000\000\000\000\003\169\000\000\003\169\003\169\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\000\000\003\169\003\169\003\169\000\000\003\169\000\000\000\000\000\000\003\169\000\000\003\169\003\169\000\000\n\026\003\169\003\169\003\169\003\169\003\169\000\000\000\000\003\169\003\169\n.\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\165\003\165\000\000\000\000\000\000\003\165\000\000\000\000\003\165\000\000\000\000\003\165\000\000\003\165\000\000\000\000\011B\000\000\003\165\003\165\003\165\000\000\003\165\003\165\003\165\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003\165\000\000\000\000\000\000\000\000\000\000\003\165\003\165\012:\012R\003\165\000\000\000\000\003\165\000\000\000\000\000\000\000\000\003\165\000\000\012j\003\165\000\000\000\000\000\000\000\000\003\165\003\165\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\011Z\011\218\012\130\012\154\012\202\003\165\003\165\000\000\000\000\003\165\000\000\003\165\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\012\250\000\000\003\165\003\165\003\165\000\000\003\165\000\000\000\000\000\000\003\165\000\000\003\165\003\165\000\000\rZ\003\165\rr\012\178\003\165\003\165\000\000\000\000\003\165\r\018\003\165\000\000\000\000\000\000\000\000\003\165\003\165\r*\rB\003\153\003\153\000\000\000\000\000\000\003\153\000\000\000\000\003\153\000\000\000\000\003\153\000\000\003\153\000\000\000\000\003\153\000\000\003\153\003\153\003\153\000\000\003\153\003\153\003\153\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\153\000\000\003\153\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\153\000\000\000\000\003\153\000\000\000\000\000\000\000\000\003\153\000\000\003\153\003\153\000\000\000\000\000\000\000\000\003\153\003\153\003\153\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\153\003\153\003\153\003\153\003\153\000\000\000\000\003\153\000\000\003\153\003\153\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\000\000\003\153\003\153\003\153\000\000\003\153\000\000\000\000\000\000\003\153\000\000\003\153\003\153\000\000\n\026\003\153\003\153\003\153\003\153\003\153\000\000\000\000\003\153\003\153\n.\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\149\003\149\000\000\000\000\000\000\003\149\000\000\000\000\003\149\000\000\000\000\003\149\000\000\003\149\000\000\000\000\011B\000\000\003\149\003\149\003\149\000\000\003\149\003\149\003\149\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003\149\000\000\000\000\000\000\000\000\000\000\003\149\003\149\012:\012R\003\149\000\000\000\000\003\149\000\000\000\000\000\000\000\000\003\149\000\000\012j\003\149\000\000\000\000\000\000\000\000\003\149\003\149\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\149\011Z\011\218\012\130\012\154\012\202\003\149\003\149\000\000\000\000\003\149\000\000\003\149\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\149\012\250\000\000\003\149\003\149\003\149\000\000\003\149\000\000\000\000\000\000\003\149\000\000\003\149\003\149\000\000\rZ\003\149\rr\012\178\003\149\003\149\000\000\000\000\003\149\r\018\003\149\000\000\000\000\000\000\000\000\003\149\003\149\r*\rB\003a\003a\000\000\000\000\000\000\003a\000\000\000\000\003a\000\000\000\000\003a\000\000\003a\000\000\000\000\003a\000\000\003a\003a\003a\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003a\000\000\003a\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003a\000\000\000\000\003a\000\000\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\000\000\000\000\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003a\003a\003a\003a\003a\000\000\000\000\003a\000\000\003a\003a\000\000\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\000\000\003a\003a\003a\000\000\003a\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\n\026\003a\003a\003a\003a\003a\000\000\000\000\003a\003a\n.\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003]\003]\000\000\000\000\000\000\003]\000\000\000\000\003]\000\000\000\000\003]\000\000\003]\000\000\000\000\011B\000\000\003]\003]\003]\000\000\003]\003]\003]\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003]\000\000\000\000\000\000\000\000\000\000\003]\003]\012:\012R\003]\000\000\000\000\003]\000\000\000\000\000\000\000\000\003]\000\000\012j\003]\000\000\000\000\000\000\000\000\003]\003]\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003]\003]\011Z\011\218\012\130\012\154\012\202\003]\003]\000\000\000\000\003]\000\000\003]\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003]\003]\012\250\000\000\003]\003]\003]\000\000\003]\000\000\000\000\000\000\003]\000\000\003]\003]\000\000\rZ\003]\rr\012\178\003]\003]\000\000\000\000\003]\r\018\003]\000\000\000\000\000\000\000\000\003]\003]\r*\rB\n\025\n\025\000\000\000\000\000\000\n\025\000\000\000\000\n\025\000\000\000\000\n\025\000\000\n\025\000\000\000\000\011B\000\000\n\025\n\025\n\025\000\000\n\025\n\025\n\025\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\n\025\000\000\000\000\000\000\000\000\000\000\n\025\n\025\012:\012R\n\025\000\000\000\000\n\025\000\000\000\000\000\000\000\000\n\025\000\000\012j\n\025\000\000\000\000\000\000\000\000\n\025\n\025\000\238\000\000\000\000\000\000\000\000\000\000\000\000\n\025\n\025\011Z\011\218\012\130\012\154\012\202\n\025\n\025\000\000\000\000\n\025\000\000\n\025\012\226\000\000\000\000\000\000\000\000\000\000\000\000\n\025\n\025\012\250\000\000\n\025\n\025\n\025\000\000\n\025\000\000\000\000\000\000\n\025\000\000\n\025\n\025\000\000\n\025\n\025\n\025\012\178\n\025\n\025\000\000\000\000\n\025\r\018\n\025\000\000\000\000\000\000\000\000\n\025\n\025\r*\rB\nq\nq\000\000\000\000\000\000\nq\000\000\000\000\nq\000\000\000\000\nq\000\000\nq\000\000\000\000\nq\000\000\nq\nq\nq\000\000\nq\nq\nq\000\000\000\000\000\000\000\000\000\000\nq\nq\nq\nq\nq\000\000\nq\000\000\000\000\000\000\000\000\000\000\nq\nq\nq\nq\nq\000\000\000\000\nq\000\000\000\000\000\000\000\000\nq\000\000\nq\nq\000\000\000\000\000\000\000\000\nq\nq\nq\000\000\000\000\000\000\000\000\000\000\000\000\nq\nq\nq\nq\nq\nq\nq\nq\nq\000\000\000\000\nq\000\000\nq\nq\000\000\000\000\000\000\000\000\000\000\000\000\nq\nq\nq\000\000\nq\nq\nq\000\000\nq\000\000\000\000\000\000\nq\000\000\nq\nq\000\000\n\026\nq\nq\nq\nq\nq\000\000\000\000\nq\nq\n.\000\000\000\000\000\000\000\000\nq\nq\nq\nq\002i\002i\000\000\000\000\000\000\002i\000\000\000\000\002i\000\000\000\000\002i\000\000\002i\000\000\000\000\002i\000\000\002i\002i\002i\000\000\002i\002i\002i\000\000\000\000\000\000\000\000\000\000\002i\002i\002i\002i\002i\000\000\002i\000\000\000\000\000\000\000\000\000\000\002i\002i\002i\002i\002i\000\000\000\000\002i\000\000\000\000\000\000\000\000\002i\000\000\002i\002i\000\000\000\000\000\000\000\000\002i\002i\002i\000\000\000\000\000\000\000\000\000\000\000\000\002i\002i\002i\002i\002i\002i\002i\002i\002i\000\000\000\000\002i\000\000\002i\002i\000\000\000\000\000\000\000\000\000\000\000\000\002i\002i\002i\000\000\002i\002i\017\n\000\000\002i\000\000\000\000\000\000\002i\000\000\002i\002i\000\000\n\026\002i\002i\002i\002i\002i\000\000\000\000\002i\002i\n.\000\000\000\000\000\000\000\000\002i\002i\002i\002i\002a\002a\000\000\000\000\000\000\002a\000\000\000\000\002a\000\000\000\000\002a\000\000\002a\000\000\000\000\002a\000\000\002a\002a\002a\000\000\002a\002a\002a\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\000\000\002a\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\000\000\000\000\002a\000\000\000\000\000\000\000\000\002a\000\000\002a\002a\000\000\000\000\000\000\000\000\002a\002a\002a\000\000\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\002a\002a\002a\002a\000\000\000\000\002a\000\000\002a\002a\000\000\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\000\000\002a\002a\002a\000\000\002a\000\000\000\000\000\000\002a\000\000\002a\002a\000\000\n\026\002a\002a\002a\002a\002a\000\000\000\000\002a\002a\n.\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002]\002]\000\000\000\000\000\000\002]\000\000\000\000\002]\000\000\000\000\002]\000\000\002]\000\000\000\000\011B\000\000\002]\002]\002]\000\000\002]\002]\002]\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\002]\000\000\000\000\000\000\000\000\000\000\002]\002]\012:\012R\002]\000\000\000\000\002]\000\000\000\000\000\000\000\000\002]\000\000\012j\002]\000\000\000\000\000\000\000\000\002]\002]\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002]\002]\011Z\011\218\012\130\012\154\012\202\002]\002]\000\000\000\000\002]\000\000\002]\012\226\000\000\000\000\000\000\000\000\000\000\000\000\002]\002]\012\250\000\000\002]\002]\002]\000\000\002]\000\000\000\000\000\000\002]\000\000\002]\002]\000\000\rZ\002]\rr\012\178\002]\002]\000\000\000\000\002]\r\018\002]\000\000\000\000\000\000\000\000\002]\002]\r*\rB\002e\002e\000\000\000\000\000\000\002e\000\000\000\000\002e\000\000\000\000\002e\000\000\002e\000\000\000\000\011B\000\000\002e\002e\002e\000\000\002e\002e\002e\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\002e\000\000\000\000\000\000\000\000\000\000\002e\002e\012:\012R\002e\000\000\000\000\002e\000\000\000\000\000\000\000\000\002e\000\000\012j\002e\000\000\000\000\000\000\000\000\002e\002e\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002e\002e\011Z\011\218\012\130\012\154\012\202\002e\002e\000\000\000\000\002e\000\000\002e\012\226\000\000\000\000\000\000\000\000\000\000\000\000\002e\002e\012\250\000\000\002e\002e\017&\000\000\002e\000\000\000\000\000\000\002e\000\000\002e\002e\000\000\rZ\002e\rr\012\178\002e\002e\000\000\000\000\002e\r\018\002e\000\000\000\000\000\000\000\000\002e\002e\r*\rB\002Y\002Y\000\000\000\000\000\000\002Y\000\000\000\000\002Y\000\000\000\000\002Y\000\000\002Y\000\000\000\000\002Y\000\000\002Y\002Y\002Y\000\000\002Y\002Y\002Y\000\000\000\000\000\000\000\000\000\000\002Y\002Y\002Y\002Y\002Y\000\000\002Y\000\000\000\000\000\000\000\000\000\000\002Y\002Y\002Y\002Y\002Y\000\000\000\000\002Y\000\000\000\000\000\000\000\000\002Y\000\000\002Y\002Y\000\000\000\000\000\000\000\000\002Y\002Y\002Y\000\000\000\000\000\000\000\000\000\000\000\000\002Y\002Y\002Y\002Y\002Y\002Y\002Y\002Y\002Y\000\000\000\000\002Y\000\000\002Y\002Y\000\000\000\000\000\000\000\000\000\000\000\000\002Y\002Y\002Y\000\000\002Y\002Y\002Y\000\000\002Y\000\000\000\000\000\000\002Y\000\000\002Y\002Y\000\000\n\026\002Y\002Y\002Y\002Y\002Y\000\000\000\000\002Y\002Y\n.\000\000\000\000\000\000\000\000\002Y\002Y\002Y\002Y\002U\002U\000\000\000\000\000\000\002U\000\000\000\000\002U\000\000\000\000\002U\000\000\002U\000\000\000\000\011B\000\000\002U\002U\002U\000\000\002U\002U\002U\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\002U\000\000\000\000\000\000\000\000\000\000\002U\002U\012:\012R\002U\000\000\000\000\002U\000\000\000\000\000\000\000\000\002U\000\000\012j\002U\000\000\000\000\000\000\000\000\002U\002U\000\238\000\000\000\000\000\000\000\000\000\000\000\000\002U\002U\011Z\011\218\012\130\012\154\012\202\002U\002U\000\000\000\000\002U\000\000\002U\012\226\000\000\000\000\000\000\000\000\000\000\000\000\002U\002U\012\250\000\000\002U\002U\002U\000\000\002U\000\000\000\000\000\000\002U\000\000\002U\002U\000\000\rZ\002U\rr\012\178\002U\002U\000\000\000\000\002U\r\018\002U\000\000\000\000\000\000\000\000\002U\002U\r*\rB\003Y\003Y\000\000\000\000\000\000\003Y\000\000\000\000\003Y\000\000\000\000\003Y\000\000\003Y\000\000\000\000\003Y\000\000\003Y\003Y\003Y\000\000\003Y\003Y\003Y\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003Y\000\000\003Y\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003Y\000\000\000\000\003Y\000\000\000\000\000\000\000\000\003Y\000\000\003Y\003Y\000\000\000\000\000\000\000\000\003Y\003Y\003Y\000\000\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003Y\003Y\003Y\003Y\003Y\000\000\000\000\003Y\000\000\003Y\003Y\000\000\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\000\000\003Y\003Y\003Y\000\000\003Y\000\000\000\000\000\000\003Y\000\000\003Y\003Y\000\000\n\026\003Y\003Y\003Y\003Y\003Y\000\000\000\000\003Y\003Y\n.\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003U\003U\000\000\000\000\000\000\003U\000\000\000\000\003U\000\000\000\000\003U\000\000\003U\000\000\000\000\011B\000\000\003U\003U\003U\000\000\003U\003U\003U\000\000\000\000\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\003U\000\000\000\000\000\000\000\000\000\000\003U\003U\012:\012R\003U\000\000\000\000\003U\000\000\000\000\000\000\000\000\003U\000\000\012j\003U\000\000\000\000\000\000\000\000\003U\003U\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003U\003U\011Z\011\218\012\130\012\154\012\202\003U\003U\000\000\000\000\003U\000\000\003U\012\226\000\000\000\000\000\000\000\000\000\000\000\000\003U\003U\012\250\000\000\003U\003U\003U\000\000\003U\000\000\000\000\000\000\003U\000\000\003U\003U\000\000\rZ\003U\rr\012\178\003U\003U\000\000\000\000\003U\r\018\003U\000\000\000\000\000\000\000\000\003U\003U\r*\rB\002I\002I\000\000\000\000\000\000\002I\000\000\000\000\002I\000\000\000\000\002I\000\000\002I\000\000\000\000\002I\000\000\002I\002I\002I\000\000\002I\002I\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\000\000\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\000\000\000\000\002I\000\000\000\000\000\000\000\000\002I\000\000\002I\002I\000\000\000\000\000\000\000\000\002I\002I\002I\000\000\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\002I\002I\002I\002I\000\000\000\000\002I\000\000\002I\002I\000\000\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\000\000\002I\002I\002I\000\000\002I\000\000\000\000\000\000\002I\000\000\002I\002I\000\000\002I\002I\002I\002I\002I\002I\000\000\000\000\002I\002I\n.\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002M\002M\000\000\000\000\000\000\002M\000\000\000\000\002M\000\000\000\000\002M\000\000\002M\000\000\000\000\002M\000\000\002M\002M\002M\000\000\002M\002M\002M\000\000\000\000\006\138\000\000\000\000\002M\002M\002M\002M\002M\000\000\002M\000\000\004\025\004\025\000\000\000\000\002M\002M\002M\002M\002M\006\142\000\000\002M\000\000\000\000\000\000\000\000\002M\000\000\002M\002M\004\025\000\000\014\005\000\000\002M\002M\002M\000\000\000\000\000\000\000\000\000\000\000\000\002M\002M\002M\002M\002M\002M\002M\002M\002M\014\005\004\025\002M\002.\002M\002M\0022\000\000\000\000\005\209\000\000\000\238\002M\002M\002M\000\000\002M\002M\002M\002>\002M\000\000\004\025\000\000\002M\000\000\002M\002M\000\000\002M\002M\002M\002M\002M\002M\000\000\000\000\002M\002M\n.\000\000\000\000\000\000\000\000\002M\002M\002M\002M\001\006\002J\000\006\000\000\000\000\000\000\002\194\002\198\006\146\002\242\002\146\006J\006\158\005\209\000\000\002\254\001\n\000\000\006\178\000\000\002\158\000\000\006\190\006e\000\000\001\210\000\000\000\000\000\000\003\250\001\018\t.\t2\001\030\001\"\000\000\000\000\t-\003\006\000\000\003\166\t-\019\190\000\000\tV\tZ\002N\003\226\003\230\000\000\003\234\003\246\004\002\t^\007n\000\000\001:\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\001>\001B\001F\001J\001N\000\000\000\000\tr\001R\t-\007\249\000\000\001V\000\000\t~\t\150\n:\005\194\005\198\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\001^\007\249\t-\000\000\000\000\007\249\000\000\000\000\000\000\000\000\001\154\006~\000\000\006\226\005\202\b\242\000\000\001\158\000\000\017f\004\138\nN\001\006\001\166\000\006\001\170\001\174\000\000\002\194\002\198\000\000\002\242\002\146\006\230\000\000\000\000\000\000\002\254\001\n\000\000\005\006\000\000\t*\000\000\000\000\000\000\000\238\001\210\000\000\000\000\000\000\003\250\001\018\t.\t2\001\030\001\"\000\000\000\000\000\000\003\006\000\000\003\166\000\000\t6\000\000\tV\tZ\000\000\003\226\003\230\000\000\003\234\003\246\004\002\t^\007n\000\238\001:\000\000\002\186\b\005\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\006\146\005\182\000\000\006J\001>\001B\001F\001J\001N\b\005\006\178\tr\001R\b\005\006\190\000\000\001V\000\000\t~\t\150\n:\005\194\005\198\000\000\000\000\001Z\t\213\000\000\000\000\000\000\000\000\006\146\001^\000\000\006J\000\000\004\197\000\000\000\000\000\000\000\000\006\178\001\154\006\214\000\000\006\190\005\202\b\242\000\000\001\158\000\000\017f\004\138\nN\0059\001\166\000\006\001\170\001\174\000\246\002\194\002\198\002\202\002\242\002\146\000\000\000\000\000\000\t\213\002\254\000\000\000\000\003r\000\000\000\000\000\000\0059\000\000\003v\001\210\000\238\021\014\000\000\003\002\b\005\003z\003~\000\000\000\000\t\213\003\130\000\000\003\006\000\000\003\166\000\000\020\162\000\000\003\218\003\222\n\166\003\226\003\230\n\178\003\234\003\246\004\002\004\n\007n\000\249\004\197\021\006\002\186\000\000\000\249\003\254\021\030\000\000\000\000\b\218\b\222\b\234\b\254\t\213\005\182\006\146\000\000\005\006\006J\t\178\t\213\000\000\021&\000\249\tr\006\178\000\000\000\000\r\205\006\190\000\000\t~\t\150\n:\005\194\005\198\021:\021v\000\000\000\000\0059\0059\000\000\000\000\000\000\000\249\000\000\r\205\r\205\000\000\022\222\r\205\000\000\000\000\000\000\000\000\000\249\021\178\025\182\005\202\b\242\000\249\000\145\000\000\t\n\004\138\nN\000\145\000\000\002\198\000\145\000\249\002\146\000\000\n\154\000\000\000\000\002\254\000\000\000\000\000\145\000\000\000\145\000\000\000\145\000\000\000\145\001\210\000\000\n\210\000\000\003\002\000\238\t\209\000\000\000\000\000\249\n\218\000\145\000\000\003\006\002\001\003\166\000\000\000\145\022\170\000\249\000\000\000\145\003\226\003\230\000\000\000\000\003\246\001\190\000\000\000\145\000\000\000\000\000\145\002\186\000\000\r\205\003\254\000\145\000\145\000\145\b\218\b\222\b\234\000\n\014\234\005\182\000\145\000\145\t\209\000\000\000\000\n\190\000\000\000\145\000\000\000\000\000\000\000\145\nU\000\000\000\000\000\000\002\001\000\000\000\000\005\194\005\198\000\145\000\145\t\209\000\000\000\145\000\145\000\000\002\001\002\001\000\000\007\002\029\n\000\000\nU\005%\000\145\000\000\000\000\000\000\005%\000\000\000\145\000\145\005\202\b\242\000\000\000\000\000\169\t\n\004\138\000\000\000\145\000\169\000\145\002\198\000\169\t\209\002\146\005%\n\154\005\006\000\000\002\254\t\209\000\000\000\169\000\000\000\169\000\000\000\169\000\000\000\169\001\210\000\000\n\210\000\238\003\002\000\000\000\000\000\000\005%\000\000\n\218\000\169\000\000\003\006\000\000\003\166\000\000\000\169\000\000\005%\000\000\000\169\003\226\003\230\005%\002\234\003\246\001\190\000\000\000\169\000\000\000\000\000\169\002\186\005%\000\000\003\254\000\169\000\169\000\169\b\218\b\222\b\234\000\000\014\234\005\182\000\169\000\169\006\146\000\000\000\000\006J\029\014\000\169\000\000\000\000\nU\000\169\006\178\005%\000\000\000\000\006\190\000\000\000\000\005\194\005\198\000\169\000\169\005%\000\000\000\169\000\169\003F\007\158\000\000\000\000\000\000\000\000\000\000\000\000\002\018\000\169\000\000\002\026\000\000\000\000\007\142\000\169\000\169\005\202\b\242\001\210\000\000\000\000\t\n\004\138\000\000\000\169\000\006\000\169\000\000\000\246\002\194\002\198\002\202\002\242\002\146\000\000\003Z\000\000\000\000\002\254\000\000\000\000\005Y\000\000\000\000\007\154\001\222\000\000\003v\001\210\000\000\000\000\002\186\003\002\000\000\003z\003~\000\000\000\000\000\000\003\130\000\000\003\006\000\000\003\166\000\000\020\162\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\007\162\021\006\002\186\000\000\000\000\003\254\021\030\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\t)\000\000\000\000\000\000\t)\000\000\021&\014\005\tr\n9\031\238\000\000\000\000\000\000\000\000\t~\t\150\n:\005\194\005\198\021:\021v\000\000\000\000 \015\017\246\000\000\014\005\n~\n9\002.\n9\n9\0022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\182\005\202\b\242\t)\002>\000\000\t\n\004\138\nN\000\006\002F\r\241\000\246\002\194\002\198\002\202\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\t) >\000\000\000\000\000\000\000\000\000\000\003v\001\210\000\000\002J\000\000\003\002\000\000\003z\003~\000\000\000\000\000\000\003\130\000\000\003\006\000\000\003\166\000\000\020\162\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\005\006\000\000\021\006\002\186\000\000\000\000\003\254\021\030\000\000\000\000\b\218\b\222\b\234\b\254\n\026\005\182\000\000\002N\000\000\000\000\000\000\000\000\n9\021&\n.\tr\000\000\031\238\000\000\000\000\000\000\000\000\t~\t\150\n:\005\194\005\198\021:\021v\001\206\000\000\005a\000\014\000\018\000\022\000\026\000\030\000\000\000\"\000&\000*\000.\0002\000\000\0006\000:\000\000\001\210\000>\025\182\005\202\b\242\000B\000\000\000\000\t\n\004\138\nN\000\000\000F\022\214\000\000\000\000\000\000\000\000\000J\000\000\000N\000R\000V\000Z\000^\000b\000f\002\170\001*\023N\000j\000\000\000\000\002\186\000n\002\001\000r\000\000\000v\000\000\023f\000\000\002\001\000\000\000\000\002\001\000\000\000\000\000\000\000\000\000\000\000\000\000z\002\001\000\000\000~\000\130\000\000\000\000\000\000\000\000\000\n\000\134\000\138\000\142\000\000\000\000\000\000\000\000\000\000\000\146\000\150\000\154\000\158\000\000\000\162\000\166\000\170\000\000\002\001\000\000\000\174\000\178\000\000\000\182\000\000\002\001\000\000\000\186\000\000\000\190\000\194\002\001\000\000\000\000\001\006\000\000\000\000\000\198\000\000\000\202\003\022\002\198\006b\000\000\002\146\000\206\000\210\000\000\000\214\002\254\001\n\000\000\000\000\002\001\002\158\000\000\000\000\000\000\000\000\001\210\000\000\000\000\000\000\001\014\001\018\001\022\0036\001\030\001\"\000\000\000\000\000\000\002\001\000\000\000\000\000\000\003:\002\001\001.\006z\000\000\000\000\000\000\000\000\000\000\0032\001\190\0016\000\000\000\000\001:\000\000\002\186\000\000\000\000\004\014\002\001\000\000\000\000\004\018\000\000\004\026\005\170\002\001\005\182\000\n\002\001\001>\001B\001F\001J\001N\000\000\000\000\002\001\001R\005\186\000\000\002\001\001V\000\000\000\000\000\n\002\001\005\194\005\198\000\000\006\n\001Z\002\001\000\000\002\001\000\000\006\022\002\001\001^\002\001\000\000\000\000\000\000\002\001\002\001\000\000\002\001\002\001\001\154\006~\002\001\000\000\005\202\000\000\000\000\001\158\002\001\001\162\004\138\001\006\000\000\001\166\000\000\001\170\001\174\003\022\002\198\t\210\000\000\002\146\000\000\000\000\002\001\000\000\002\254\001\n\000\000\000\000\002\001\002\158\000\000\000\000\002\001\000\000\001\210\003\158\000\000\002\198\001\014\001\018\001\022\0036\001\030\001\"\003j\000\000\000\000\003\146\000\000\000\000\b\162\003:\000\000\001.\006z\001\210\000\000\000\000\000\000\000\000\0032\001\190\0016\000\000\000\000\001:\000\000\002\186\018\178\000\000\004\014\002\146\000\000\000\000\004\018\000\000\004\026\005\170\000\000\005\182\000\000\003\154\001>\001B\001F\001J\001N\000\000\002\186\025^\001R\005\186\000\000\000\000\001V\000\000\000\000\000\000\000\000\005\194\005\198\000\000\006\n\001Z\000\000\000\000\000\000\000\000\006\022\000\000\001^\000\000\018\182\000\000\000\000\000\000\007\130\000\000\000\000\000\000\001\154\006~\000\000\000\000\005\202\000\000\018\194\001\158\025\130\001\162\004\138\000\000\004\149\001\166\000\000\001\170\001\174\004\149\003\022\002\198\004\149\007\201\002\146\000\000\007>\000\000\007\201\002\254\018\178\000\000\004\149\002\146\005\198\000\000\004\149\000\000\004\149\001\210\000\000\007^\000\000\000\000\000\000\025\142\003\026\007\201\000\000\t\162\004\149\000\000\000\000\000\000\000\000\000\000\004\149\000\000\000\000\003&\000\000\000\000\025\"\000\000\000\000\t\206\001\190\000\000\004\149\007\201\000\000\004\149\002\186\000\000\018\182\004\014\004\149\004\149\012\005\004\018\007\201\004\026\000\000\t\222\005\182\007\201\007\201\000\238\018\194\000\000\025b\000\000\004\149\004\149\007\201\007\201\005\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\194\005\198\004\149\004\149\r\150\000\000\004\149\004\149\000\000\000\000\005\198\000\000\000\000\000\000\000\000\000\000\007\201\000\000\000\000\012\005\n\166\025n\012\005\r\158\004\149\005\202\007\201\000\000\000\000\012\005\n=\004\138\000\006\012\005\000\000\004\149\002\194\002\198\025\"\002\242\002\146\000\000\027\214\000\000\000\000\002\254\000\000\000\000\000\000\000\000\n=\000\000\n=\n=\000\000\001\210\000\000\000\000\000\000\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\nn\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\001\000\000\n5\000\000\000\006\000\000\000\000\002\001\002\194\002\198\002\001\002\242\002\146\000\000\005\202\b\242\n=\002\254\002\001\t\n\004\138\nN\n5\000\000\n5\n5\000\n\001\210\000\000\000\000\000\000\003\002\000\000\003z\003~\000\000\000\000\000\000\002\001\002\001\003\006\000\000\003\166\000\000\002\001\000\000\003\218\003\222\000\000\003\226\003\230\002\001\003\234\003\246\004\002\004\n\007n\002\001\002\001\000\000\002\186\002\001\000\000\003\254\002\001\000\n\000\000\b\218\b\222\b\234\b\254\002\001\005\182\000\000\000\000\000\000\000\000\002\001\000\000\002\001\000\000\000\000\tr\002\001\002\001\000\000\000\000\000\000\002\001\nn\t\150\n:\005\194\005\198\002\001\002\001\002\001\002\001\002\001\000\000\000\000\000\000\002\001\002\001\000\000\002\001\002\001\002\001\000\000\000\000\000\000\002\001\002\001\003\134\000\n\000\000\002\001\005\202\b\242\n5\000\n\002\001\t\n\004\138\nN\002\001\000\000\002\001\002\001\000\n\000\000\000\000\002\001\000\000\002\001\002\001\002\001\000\000\002\001\002\001\002\001\002\001\000\000\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\000\000\000\000\002\001\000\000\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\000\000\000\000\002\001\000\n\000\000\002\001\007r\000\000\002\001\002\001\002\001\000\000\018f\000\000\000\000\002\001\002\001\002\001\002\001\002\001\000\000\002\001\002\001\000\000\000\000\002\001\000\000\002\001\002\001\000\000\000\000\002\001\000\000\007v\002\001\002\001\000\000\002\001\002\001\002\001\002\001\000\000\000\000\002\001\002\001\000\000\005\201\005\201\002\001\002\001\002\001\005\201\002\001\005\201\005\201\000\000\005\201\000\000\005\201\005\201\002\001\002\001\005\201\018\166\005\201\005\201\005\201\005\201\005\201\005\201\005\201\005\201\000\000\005\201\000\000\005\201\000\000\000\000\000\000\000\000\000\000\000\000\005\201\000\000\000\000\002\001\000\000\005\201\005\201\005\201\000\000\002\001\005\201\005\201\005\201\000\000\000\000\000\000\005\201\000\000\005\201\000\000\000\000\005\201\000\000\000\000\005I\000\000\005\201\005\201\005\201\022\238\000\000\005\201\005\201\005\201\000\000\005\201\005\201\000\000\000\000\000\000\000\000\000\000\005\201\000\000\000\000\000\000\005\201\005\201\003v\005\201\000\000\005\201\000\000\000\000\000\000\000\000\005\201\005\201\005\201\000\000\005\201\005\201\005\201\005\201\000\000\005\201\005\201\000\000\000\000\000\000\023\026\005\201\000\000\005\201\005\201\000\000\000\000\002\166\005\201\000\000\000\000\021\006\0242\005\201\000\000\012!\021\030\005\201\012!\005\201\005\201\012!\012!\000\000\005\201\012!\023F\012!\000\000\000\000\012!\000\000\000\000\000\000\012!\012!\000\000\012!\012!\000\000\012!\000\000\012!\000\000\000\000\000\000\000\000\012!\000\000\000\000\012!\005I\000\000\000\000\000\000\000\000\000\000\000\000\012!\000\000\012!\023\170\000\000\000\000\000\000\000\000\012!\012!\014\005\r\241\000\000\000\000\000\000\012!\000\000\000\000\012!\000\000\000\000\012!\012!\000\000\012!\000\000\012!\012!\000\000\000\000\014\005\000\000\000\000\002.\000\000\000\000\0022\000\000\000\000\012!\000\000\000\000\000\000\002:\000\000\000\000\000\000\012!\012!\002>\000\000\012!\000\000\012!\000\000\002F\r\241\000\000\000\000\005\230\000\000\000\000\000\000\014\005\r\241\000\000\012!\012!\000\000\012!\012!\000\000\012!\000\000\012!\007y\012!\000A\012!\002J\012!\000A\000A\014\005\000A\000A\002.\000\000\000\000\0022\000A\000\000\000\000\000\000\000\000\007y\002\214\000\000\000\000\000\000\000A\000\000\002>\000\000\000A\000\000\000A\000A\002F\r\241\000\000\005Q\000\000\000A\000\000\000A\025\222\000\000\000\000\000A\000A\000\000\000A\000A\002N\000A\000A\000A\000A\000A\005\249\014E\002J\000A\000\000\003v\000A\000\000\000\000\000\000\000A\000A\000A\000A\000\000\000A\000\000\000\000\000\000\005\249\000\000\005\253\014E\005\249\000\000\000A\000\000\026N\000\000\000\000\000\000\000\000\000A\000A\000A\000A\000A\000\000\021\006\007u\005\253\000=\000\000\021\030\005\253\000=\000=\002N\000=\000=\000\000\000\000\026\242\027\002\000=\000\000\000\000\000\000\000\000\007u\000A\000A\000\000\000\000\000=\000A\000A\000A\000=\000\000\000=\000=\000\000\000\000\000\000\005%\000\000\000=\005Q\000=\005%\014E\014E\000=\000=\000\000\000=\000=\027\246\000=\000=\000=\000=\000=\005\249\000\000\000\000\000=\000\000\005%\000=\014E\014E\014E\000=\000=\000=\000=\000\000\000=\005\249\000\000\000\000\005\249\000\000\005\253\000\000\000\000\000\000\000=\000\000\005%\014E\000\000\014E\000\000\000=\000=\000=\000=\000=\005\253\005%\007\133\005\253\r\141\000\000\005%\002\234\r\141\r\141\000\000\r\141\r\141\000\000\000\000\005%\005%\r\141\000\000\000\000\000\000\000\000\007\133\000=\000=\000\000\000\000\r\141\000=\000=\000=\r\141\000\000\r\141\r\141\000\000\000\000\000\000\000\000\000\000\r\141\005%\r\141\000\000\000\000\000\000\r\141\r\141\000\000\r\141\r\141\005%\r\141\r\141\r\141\r\141\r\141\000\000\000\000\000\000\r\141\000\000\000\000\r\141\000\000\000\000\000\000\r\141\r\141\r\141\r\141\000\000\r\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\141\000\000\000\000\000\000\000\000\tJ\000\000\r\141\r\141\r\141\r\141\r\141\002\014\000\000\007\129\000\000\r\137\000\000\000\000\002\018\r\137\r\137\002\026\r\137\r\137\000\000\000\000\000\000\000\000\r\137\001\210\000\000\000\000\000\000\007\129\r\141\r\141\000\000\000\000\r\137\r\141\r\141\r\141\r\137\000\000\r\137\r\137\003Z\000\000\000\000\000\000\000\000\r\137\000\000\r\137\000\000\007\154\001\222\r\137\r\137\000\000\r\137\r\137\002\186\r\137\r\137\r\137\r\137\r\137\000\000\000\000\000\000\r\137\000\000\000\000\r\137\000\000\000\000\000\000\r\137\r\137\r\137\r\137\000\000\r\137\000\000\000\000\000\000\000\000\000\000\000\000\007\162\000\000\000\000\r\137\000\000\000\000\000\000\000\000\000\000\000\000\r\137\r\137\r\137\r\137\r\137\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\r\137\r\137\000\000\000\000\001\210\r\137\r\137\r\137\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\n\182\003\234\003\246\004\002\004\n\007n\001\202\001\206\r\162\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\001\210\001\214\001\230\000\000\000\000\000\000\tr\000\000\000\000\000\000\001\242\000\000\000\000\nn\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\002\162\000\000\000\000\000\000\002\174\000\000\002\186\0046\004B\000\000\000\000\000\000\000\000\004N\005\202\b\242\019\170\r\197\r\197\t\n\004\138\nN\r\197\000\000\001\206\r\197\000\000\000\000\000\000\000\000\004R\000\000\000\000\004\222\000\000\r\197\r\197\r\197\000\000\r\197\r\197\r\197\000\000\000\000\000\000\000\000\000\000\002\198\000\000\000\000\000\000\000\000\000\000\r\197\000\000\000\000\000\000\000\000\000\000\r\197\r\197\000\000\000\000\r\197\000\000\001\210\000\000\000\000\000\000\002\170\000\000\r\197\000\000\000\000\r\197\000\000\000\000\000\000\025\210\r\197\r\197\r\197\000\000\000\000\000\000\000\000\000\000\000\000\r\197\r\197\000\000\027\014\003\178\000\000\027\018\r\197\000\000\000\000\002\186\004\230\000\000\000\000\r\197\000\000\000\000\027B\000\000\000\000\000\000\r\197\r\197\r\197\000\000\r\197\r\197\000\000\000\000\004\253\000\000\000\000\000\000\000\000\004\253\000\000\r\197\004\253\r\197\r\197\027R\000\000\000\000\r\197\000\000\000\000\000\000\004\253\r\197\000\000\000\000\004\253\r\197\004\253\r\197\r\197\n%\n%\000\000\000\000\000\000\n%\000\000\001\206\n%\004\253\000\000\000\000\000\000\000\000\000\000\004\253\n%\000\000\n%\n%\n%\000\000\n%\n%\n%\000\000\000\000\004\253\000\000\000\000\004\253\000\000\000\000\000\000\000\000\004\253\n%\000\000\000\000\000\000\000\000\000\000\n%\n%\000\000\000\000\n%\000\000\000\000\000\000\000\000\004\253\002\170\000\000\n%\004\253\000\000\n%\000\000\000\000\000\000\000\000\n%\n%\n%\004\253\004\253\000\000\000\000\004\253\004\253\n%\n%\000\000\000\000\000\000\000\000\000\000\n%\000\000\000\000\000\000\004\230\000\000\000\000\n%\000\000\004\253\000\000\000\000\000\000\000\000\n%\n%\n%\000\000\n%\n%\020\222\000\000\004\245\000\000\000\000\000\000\000\000\004\245\000\000\n%\004\245\n%\n%\000\000\000\000\000\000\n%\000\000\000\000\000\000\004\245\n%\000\000\000\000\004\245\n%\004\245\n%\n%\n!\n!\000\000\000\000\000\000\n!\000\000\001\206\n!\004\245\000\000\000\000\000\000\000\000\000\000\004\245\n!\000\000\n!\n!\n!\000\000\n!\n!\n!\000\000\000\000\004\245\000\000\000\000\004\245\000\000\000\000\000\000\000\000\004\245\n!\000\000\000\000\000\000\000\000\000\000\n!\n!\000\000\000\000\n!\000\000\000\000\000\000\000\000\004\245\002\170\000\000\n!\004\245\000\000\n!\000\000\000\000\000\000\000\000\n!\n!\n!\004\245\004\245\000\000\000\000\004\245\004\245\n!\n!\000\000\000\000\000\000\000\000\000\000\n!\000\000\000\000\000\000\004\230\000\000\000\000\n!\000\000\004\245\000\000\000\000\000\000\000\000\n!\n!\n!\000\000\n!\n!\023\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\169\n!\000\006\n!\n!\001\169\002\194\002\198\n!\002\242\002\146\000\000\000\000\n!\000\000\002\254\000\000\n!\000\000\n!\n!\000\000\004\022\000\000\001\169\001\210\000\000\000\000\000\000\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\001\169\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\001\169\002\186\000\000\000\000\003\254\001\169\001\169\000\238\b\218\b\222\b\234\b\254\000\000\005\182\001\169\001\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\nn\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\000\001\169\000\000\000\000\000\000\000\000\000\000\014Q\000\000\000\006\000\000\001\169\014Q\002\194\002\198\000\000\002\242\002\146\000\000\005\202\b\242\017z\002\254\000\000\t\n\004\138\nN\000\000\000\000\017\142\000\000\014Q\001\210\000\000\000\000\000\000\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\014Q\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\014Q\002\186\000\000\000\000\003\254\014Q\014Q\000\238\b\218\b\222\b\234\b\254\000\000\005\182\014Q\014Q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\nn\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\000\014Q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014Q\000\000\rI\000\000\000\000\000\000\000\000\rI\005\202\b\242\rI\000y\000\000\t\n\004\138\nN\000y\000\000\000y\000y\rI\000\000\000\000\000\000\rI\000\000\rI\000y\000\000\000y\000y\000\000\000\000\000y\000y\000y\000\000\t\189\rI\000\000\000\000\000\000\000\000\000\000\rI\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000y\000y\000\000\rI\000y\000\000\rI\000\000\000\000\000\000\000y\rI\000y\000\000\000\000\000y\000\000\000\000\000\000\000\000\000y\000y\000y\000\000\000\000\000\000\000\000\rI\0112\000y\000y\rI\000\000\000\000\000\000\000\000\000y\000y\000\000\000\000\000y\rI\rI\000y\000\000\rI\rI\000\000\000\000\000\000\000y\000y\000y\000\000\000y\000y\000\000\000\000\000\000\000\000\000\000\t\189\000\006\rI\000\000\000y\002\194\002\198\000y\002\242\002\146\000\000\000y\000\000\r\138\002\254\000\000\000y\000\000\000\000\000\000\000y\000\000\000y\000\000\001\210\000\000\000\000\000\000\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\020\014\t\150\n:\005\194\005\198\000\000\000\000\005-\000\000\000\006\000\000\000\000\000\246\002\194\002\198\002\"\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\021\182\000\000\000\000\005\202\b\242\000\000\003v\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\021\186\000\000\003\006\000\000\003\166\000\000\021\226\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\021\006\002\186\000\000\000\000\003\254\021\030\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\130\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\019\150\t\150\n:\005\194\005\198\021:\022\150\005%\000\000\000\006\005-\000\000\005%\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\022\166\005\202\b\242\000\000\005%\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\005%\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\005%\002\186\000\000\000\000\003\254\005%\002\234\000\238\b\218\b\222\b\234\b\254\000\000\005\182\000\000\005%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\018\130\000\000\018\018\t\150\n:\005\194\005\198\002\014\000\000\000\000\000\000\000\006\005%\000\000\002\018\002\194\002\198\002\026\002\242\002\146\000\000\000\000\005%\000\000\002\254\001\210\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\003Z\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\007\154\001\222\003\218\003\222\000\000\003\226\003\230\002\186\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\007\162\000\000\000\000\tr\000\000\000\000\000\000\000\000\019\214\000\000\n\n\t\150\n:\005\194\005\198\002\014\000\000\000\000\000\000\000\006\000\000\000\000\002\018\002\194\002\198\002\026\002\242\002\146\000\000\000\000\000\000\000\000\002\254\001\210\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\003Z\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\007\154\001\222\003\218\003\222\000\000\003\226\003\230\002\186\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\007\162\000\000\000\000\tr\000\000\000\000\000\000\000\000\020*\000\000\n\030\t\150\n:\005\194\005\198\002\014\000\000\000\000\000\000\000\006\000\000\000\000\002\018\002\194\002\198\002\026\002\242\002\146\000\000\000\000\000\000\000\000\002\254\001\210\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\003Z\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\007\154\001\222\003\218\003\222\000\000\003\226\003\230\002\186\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\007\162\000\000\000\000\tr\000\000\000\000\000\000\000\000\020:\000\000\n\134\t\150\n:\005\194\005\198\002\014\000\000\000\000\000\000\000\006\000\000\000\000\002\018\002\194\002\198\002\026\002\242\002\146\000\000\000\000\000\000\000\000\002\254\001\210\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\003Z\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\007\154\001\222\003\218\003\222\000\000\003\226\003\230\002\186\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\007\162\000\000\000\000\tr\000\000\000\000\000\000\000\000\020b\000\000\011\006\t\150\n:\005\194\005\198\002\014\000\000\000\000\000\000\000\006\000\000\000\000\002\018\002\194\002\198\002\026\002\242\002\146\000\000\000\000\000\000\000\000\002\254\001\210\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\003Z\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\007\154\001\222\003\218\003\222\000\000\003\226\003\230\002\186\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\007\162\000\000\000\000\tr\000\000\000\000\000\000\000\000\020r\000\000\011F\t\150\n:\005\194\005\198\002\014\000\000\000\000\000\000\000\006\000\000\000\000\002\018\002\194\002\198\002\026\002\242\002\146\000\000\000\000\000\000\000\000\002\254\001\210\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\003Z\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\007\154\001\222\003\218\003\222\000\000\003\226\003\230\002\186\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\007\162\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\011^\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\011\130\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\011\174\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\011\198\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\011\222\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\011\246\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\012\014\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\012&\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\012>\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\012V\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\012n\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\012\134\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\012\158\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\012\182\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\012\206\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\012\230\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\012\254\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\r\022\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\r.\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\rF\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\r^\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\rv\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\015\n\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\0152\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\015Z\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\015\130\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\015\166\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\015\202\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\015\246\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\016\026\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\016>\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\016Z\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\016\250\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\017\014\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\194\002\198\000\000\002\242\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\005\202\b\242\000\000\000\000\001\210\t\n\004\138\nN\003\002\000\000\003z\003~\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\166\000\000\000\000\000\000\003\218\003\222\000\000\003\226\003\230\000\000\003\234\003\246\004\002\004\n\007n\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\b\254\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000\000\000\000\000\000\000\017*\t\150\n:\005\194\005\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\246\000\000\000\000\002\202\r\201\r\201\000\000\000\000\000\000\r\201\005\202\b\242\r\201 >\000\000\t\n\004\138\nN\000\000\003v\004\162\000\000\r\201\r\201\r\201\000\000\r\201\r\201\r\201\000\000\000\000\003\130\000\000\000\000\000\000\000\000\000\000\020\162\000\000\000\000\r\201\000\000\000\000\000\000\000\000\000\000\r\201\r\201\000\000\028v\r\201\000\000\021\006\000\000\000\000\000\000\000\000\021\030\r\201\000\000\000\000\r\201\000\000\000\000\000\000\000\000\r\201\r\201\r\201\000\000\000\000\000\000\000\000\021&\000\000\r\201\r\201\031\238\000\000\000\000\000\000\000\000\r\201\000\000\000\000\000\000\r\201\021:\021v\r\201\000\000\005a\000\000\000\000\000\000\000\000\r\201\r\201\r\201\000\000\r\201\r\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\182\000\000\r\201\000\000\r\201\r\201\000\000\000\000\000\000\r\201\000\000\000\000\000\000\000\000\r\201\000\000\012-\000\000\r\201\012-\r\201\r\201\003\022\002\198\000\000\000\241\002\146\000\000\007>\000\000\000\241\002\254\000\000\000\000\000\000\012-\012-\000\000\012-\012-\000\000\001\210\000\000\007^\000\000\000\000\000\000\000\000\003\026\000\241\000\000\t\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012-\000\000\003&\000\000\000\000\000\000\000\000\000\000\0032\001\190\000\000\000\000\000\241\000\000\000\000\002\186\000\000\003\018\004\014\000\000\000\000\012-\004\018\000\241\004\026\005\170\t\222\005\182\000\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\241\000\241\005\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\194\005\198\000\000\006\n\012-\000\000\012-\000\000\000\000\006\022\000\000\000\000\000\000\000\000\000\000\000\000\000\241\000\000\000\000\012-\000\000\000\000\012-\012-\000\000\005\202\000\241\012-\000\000\012-\000\000\004\138\012)\012-\000\000\012)\000\000\000\000\003\022\002\198\000\000\000\000\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\012)\012)\000\000\012)\012)\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012)\000\000\003&\000\000\000\000\000\000\000\000\000\000\006^\001\190\000\000\000\000\000\000\000\000\000\000\002\186\000\000\000\000\004\014\000\000\000\000\012)\004\018\000\000\004\026\005\170\000\000\005\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\186\000\000\003\209\003\209\000\000\000\000\000\000\003\209\005\194\005\198\003\209\006\n\012)\000\000\012)\000\000\000\000\006\022\000\000\000\000\003\209\003\209\003\209\000\000\003\209\003\209\003\209\012)\000\000\000\000\012)\012)\000\000\005\202\000\000\012)\000\000\012)\003\209\004\138\000\000\012)\000\000\000\000\003\209\004\154\000\000\000\000\003\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\209\000\000\000\000\003\209\000\000\000\000\000\000\000\000\003\209\003\209\003\209\000\000\000\000\000\000\000\000\000\000\000\000\003\209\003\209\000\000\000\000\000\000\000\000\000\000\003\209\000\000\000\000\000\000\003\209\000\000\000\000\003\209\000\000\000\000\000\000\000\000\000\000\000\000\003\209\003\209\003\209\000\000\003\209\003\209\001\193\001\193\000\000\000\000\000\000\001\193\000\000\000\000\001\193\003\209\000\000\003\209\003\209\000\000\000\000\000\000\003\209\000\000\001\193\001\193\001\193\003\209\001\193\001\193\001\193\003\209\000\000\003\209\003\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\001\193\001\193\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\193\000\000\000\000\001\193\000\000\000\000\000\000\000\000\001\193\001\193\001\193\000\000\000\000\000\000\000\000\000\000\000\000\001\193\001\193\000\000\000\000\000\000\000\000\000\000\001\193\000\000\000\000\000\000\001\193\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\000\000\001\193\001\193\001\193\000\000\001\193\001\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\193\000\000\001\193\001\193\003\022\002\198\000\000\001\193\002\146\000\000\007>\000\000\001\193\002\254\000\000\000\000\005\006\000\000\001\193\000\000\000\000\000\000\000\000\001\210\000\000\007^\000\000\000\000\000\000\000\000\003\026\000\000\000\000\t\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003&\000\000\000\000\000\000\000\000\000\000\t\206\001\190\000\000\000\000\000\000\000\000\000\000\002\186\000\000\000\000\004\014\000\000\000\000\012\005\004\018\000\000\004\026\000\000\t\222\005\182\000\000\000\000\000\000\000\000\006U\006U\000\000\000\000\004\209\006U\000\000\005\186\006U\000\000\000\000\000\000\000\000\000\000\000\000\005\194\005\198\000\000\006U\r\150\006U\000\000\006U\000\000\006U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\005\000\000\006U\012\005\012\005\000\000\005\202\000\000\006U\006U\012\005\000\000\004\138\000\000\012\005\004\209\000\000\006U\000\000\000\000\006U\000\000\001\006\006U\000\000\000\000\000\000\000\000\006U\006U\006U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\n\000\000\000\000\000\000\002\158\000\000\006U\006U\000\000\000\000\006U\000\000\000\000\001\014\001\018\001\022\001\026\001\030\001\"\000\000\006U\006U\006U\000\000\006U\006U\001&\000\000\001.\0012\000\000\bV\000\000\000\000\000\000\000\000\000\000\0016\006U\000\000\001:\006U\006U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006U\000\000\000\000\000\000\001>\001B\001F\001J\001N\000\000\000\000\000\000\001R\000\000\000\000\000\000\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Z\004\025\004\025\004\025\004\025\000\000\004\025\001^\004\025\004\025\000\000\004\025\000\000\000\000\000\000\000\000\000\000\001\154\031\002\004\025\000\000\004\025\000\000\004\025\001\158\004\025\001\162\004\025\000\000\000\000\001\166\000\000\001\170\001\174\000\000\000\000\000\000\004\025\000\000\004\025\000\000\000\000\000\000\004\025\004\025\004\025\004\025\000\000\000\000\000\000\000\000\000\000\005\209\000\000\005\213\004\025\000\000\004\025\004\025\000\000\004\025\000\000\000\000\004\025\004\025\004\025\004\025\004\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\025\000\000\004\025\000\000\004\025\000\000\004\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\025\004\025\004\025\004\025\004\025\004\025\004\025\004\025\000\000\000\000\000\000\005\209\000\000\005\213\000\000\000\000\000\000\000\000\004\025\004\025\004\025\004\025\004\025\000\000\004\025\000\000\006I\006I\000\000\000\000\000\000\006I\000\000\004\025\006I\004\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006I\000\000\006I\000\000\006I\000\000\006I\000\000\000\000\b\157\000\000\000\000\b\157\000\000\000\000\000\000\000\000\000\000\006I\000\000\000\000\000\000\000\000\000\000\006I\006I\000\000\000\000\b\157\b\157\000\000\b\157\b\157\b\158\000\000\000\000\006I\000\000\000\000\006I\000\000\000\000\000\000\000\000\006I\006I\000\238\000\000\000\000\000\000\000\000\000\000\b\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006I\006I\000\000\000\000\006I\000\000\000\000\n1\000\000\000\000\000\000\000\000\000\000\b\157\006I\006I\006I\000\000\006I\006I\000\000\000\000\000\000\011B\000\000\000\000\014\190\n1\000\000\n1\n1\000\000\006I\000\000\000\000\006I\006I\011\170\011\242\012\n\011\194\012\"\000\000\b\157\000\000\b\157\000\000\006I\000\000\000\000\000\000\012:\012R\000\000\000\000\000\000\000\000\000\000\006B\000\000\000\000\b\157\b\157\012j\000\000\000\000\b\157\000\000\b\157\000\000\000\000\000\238\b\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011Z\011\218\012\130\012\154\012\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\226\000\000\000\000\000\000\000\000\001\006\000\000\000\000\000\000\012\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\n\000\000\000\000\rZ\000\000\rr\012\178\000\000\000\000\000\000\000\000\n1\r\018\001\014\001\018\001\022\001\026\001\030\001\"\000\000\r*\rB\000\000\000\000\000\000\000\000\001&\000\000\001.\0012\000\000\005%\000\000\000\000\000\000\000\000\005%\0016\000\000\005%\001:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005%\000\000\000\000\000\000\005%\000\000\005%\000\000\001>\001B\001F\001J\001N\000\000\000\000\000\000\001R\000\000\005%\000\000\001V\000\000\000\000\000\000\005%\000\000\000\000\000\000\000\000\001Z\t\149\t\149\000\000\004Z\000\000\t\149\001^\000\000\t\149\005%\000\000\000\000\000\000\000\000\005%\002\234\001\154\031\030\t\149\000\000\t\149\000\000\t\149\001\158\t\149\001\162\000\000\000\000\000\000\001\166\005%\001\170\001\174\000\000\000\000\000\000\t\149\000\000\000\000\000\000\000\000\000\000\t\149\t\149\005%\005%\000\000\000\000\005%\005%\000\000\000\000\000\000\000\000\t\149\004j\000\000\t\149\000\000\007\238\000\000\000\000\t\149\t\149\t\149\000\000\005%\000\000\000\000\000\000\000\000\0256\000\000\000\000\000\000\000\000\000\000\005%\t\149\000\000\000\000\000\000\t\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\149\t\149\t\149\000\000\t\149\t\149\014\145\014\145\000\000\000\000\000\000\014\145\000\000\000\000\014\145\t\149\000\000\000\000\t\149\000\000\000\000\000\000\t\149\000\000\014\145\000\000\014\145\000\000\014\145\000\000\014\145\005\006\000\000\t\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\145\000\000\000\000\000\000\000\000\000\000\014\145\014\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004Z\000\000\000\000\014\145\000\000\000\000\014\145\000\000\000\000\000\000\000\000\014\145\014\145\014\145\014\149\014\149\000\000\000\000\000\000\014\149\000\000\000\000\014\149\000\000\000\000\000\000\000\000\014\145\000\000\000\000\000\000\014\145\014\149\000\000\014\149\000\000\014\149\000\000\014\149\000\000\000\000\014\145\014\145\014\145\000\000\014\145\014\145\000\000\000\000\000\000\014\149\000\000\004j\000\000\000\000\000\000\014\149\014\149\000\000\014\145\000\000\000\000\000\000\014\145\000\000\004Z\000\000\000\000\014\149\000\000\000\000\014\149\000\000\000\000\014\145\000\000\014\149\014\149\014\149\001\177\000\000\000\000\000\000\000\000\001\177\000\000\001\206\001\177\000\000\000\000\000\000\000\000\014\149\000\000\000\000\t\253\014\149\001\177\000\000\000\000\000\000\001\177\000\000\001\177\000\000\000\000\014\149\014\149\014\149\000\000\014\149\014\149\000\000\000\000\000\000\001\177\000\000\004j\000\000\000\000\000\000\001\177\001\177\000\000\014\149\000\000\000\000\000\000\014\149\000\000\000\000\002\170\000\000\001\177\000\000\000\000\001\177\000\000\000\000\014\149\000\000\001\177\001\177\001\177\000\000\000\000\005\021\000\000\000\000\000\000\000\000\005\021\000\000\000\000\005\021\000\000\000\000\001\177\001\177\000\000\000\000\004\230\000\000\000\000\005\021\000\000\000\000\000\000\005\021\000\000\005\021\001\177\001\177\003\253\000\000\001\177\001\177\000\000\003\253\000\000\001\206\003\253\005\021\000\000\000\000\000\000\001\177\000\000\005\021\t\249\000\000\003\253\000\000\001\177\000\000\003\253\000\000\003\253\001\177\000\000\005\021\000\000\000\000\005\021\001\177\000\000\000\000\000\000\005\021\003\253\000\000\000\000\000\000\000\000\000\000\003\253\001\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\021\002\170\000\000\003\253\005\021\000\000\003\253\000\000\000\000\000\000\000\000\003\253\003\253\003\253\005\021\005\021\000\000\000\000\005\021\005\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\253\003\253\000\000\000\000\004\230\000\000\000\000\000\000\000\000\005\021\000\000\000\000\000\000\000\000\003\253\003\253\003\249\000\000\003\253\003\253\024\210\003\249\000\000\001\206\003\249\000\000\000\000\000\000\000\000\003\253\000\000\000\000\t\249\000\000\003\249\000\000\003\253\000\000\003\249\000\000\003\249\003\253\000\000\000\000\000\000\000\000\000\000\003\253\000\000\000\000\000\000\000\000\003\249\000\000\000\000\000\000\000\000\000\000\003\249\001\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\170\000\000\003\249\000\000\000\000\003\249\000\000\000\000\000\000\000\000\003\249\003\249\003\249\000\000\000\153\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\153\000\000\000\000\000\000\003\249\003\249\000\000\000\000\004\230\000\000\000\153\000\000\000\153\000\000\000\153\000\000\000\153\000\000\003\249\003\249\000\000\000\000\003\249\003\249\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\003\249\000\153\000\000\000\000\000\000\000\153\000\000\003\249\000\000\000\000\000\000\000\000\003\249\000\153\000\000\000\000\000\153\000\000\003\249\000\000\000\000\000\153\000\153\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\000\000\221\000\000\000\153\000\000\000\000\000\221\000\000\000\000\000\221\000\000\000\000\000\000\000\153\000\153\000\000\000\000\000\153\000\153\000\221\000\000\000\221\000\000\000\221\000\000\000\221\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\153\000\000\000\153\000\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\221\000\221\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\161\000\000\000\221\000\000\000\000\000\161\000\000\000\000\000\161\000\000\000\000\000\000\000\221\000\221\000\000\000\000\000\221\000\221\000\161\000\000\000\161\000\000\000\161\000\000\000\161\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\000\000\161\000\000\000\000\000\000\000\000\000\000\000\161\000\221\000\000\000\221\000\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\161\000\000\000\000\000\161\000\000\000\000\000\000\000\000\000\161\000\161\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\161\000\161\000\000\000\000\000\000\000\000\000\000\000\161\000\000\000\157\000\000\000\161\000\000\000\000\000\157\000\000\000\000\000\157\000\000\000\000\000\000\000\161\000\161\000\000\000\000\000\161\000\161\000\157\000\000\000\157\000\000\000\157\000\000\000\157\000\000\000\000\000\161\000\000\000\000\000\000\000\000\000\000\000\161\000\161\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\157\000\161\000\000\000\161\000\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\000\000\157\000\000\000\000\000\000\000\000\000\157\000\157\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\157\000\157\000\000\000\000\000\000\000\000\000\000\000\157\000\000\001\141\000\000\000\157\000\000\000\000\001\141\000\000\000\000\001\141\000\000\000\000\000\000\000\157\000\157\000\000\000\000\000\157\000\157\001\141\000\000\000\000\000\000\001\141\000\000\001\141\000\000\000\000\000\157\000\246\000\000\000\000\002\202\000\000\000\157\000\157\000\000\001\141\001\141\000\000\000\000\000\000\005Y\001\141\000\157\000\000\000\157\000\000\003v\014\141\014\141\000\000\005\209\000\000\014\141\001\141\000\000\014\141\001\141\000\000\003\130\000\000\000\000\001\141\001\141\001\141\020\162\014\141\000\000\014\141\000\000\014\141\000\000\014\141\000\000\000\000\000\000\000\000\028v\001\141\000\000\021\006\000\000\001\141\000\000\014\141\021\030\000\000\000\000\000\000\000\000\014\141\014\141\001\141\001\141\000\000\000\000\001\141\001\141\000\000\000\000\000\000\021&\014\141\005\209\000\000\014\141\000\000\001\141\000\000\000\000\014\141\014\141\014\141\001\141\001\141\021:\021v\000\000\000\000\001\141\000\000\000\000\000\000\000\000\000\000\001\141\014\141\000\000\000\000\000\000\014\141\000\000\000\000\000\000\000\000\000\000\000\000\025\182\000\000\000\000\014\141\014\141\014\141\000\000\014\141\014\141\014\137\014\137\000\000\000\000\000\000\014\137\000\000\000\000\014\137\000\000\000\000\000\000\014\141\000\000\000\000\000\000\014\141\000\000\014\137\000\000\014\137\000\000\014\137\000\000\014\137\005\006\000\000\014\141\r\169\000\000\000\000\r\169\000\000\000\000\000\000\000\000\014\137\000\000\000\000\000\000\000\000\r\169\014\137\014\137\000\000\000\000\000\000\r\169\000\000\000\000\000\000\000\000\000\000\000\000\014\137\000\000\000\000\014\137\000\000\r\169\000\000\000\000\014\137\014\137\014\137\r\169\t\153\t\153\000\000\000\000\000\000\t\153\000\000\000\000\t\153\000\000\000\000\r\169\014\137\000\000\r\169\000\000\014\137\000\000\t\153\r\169\t\153\000\000\t\153\000\000\t\153\000\000\014\137\014\137\014\137\000\000\014\137\014\137\000\000\000\000\000\000\r\169\t\153\000\000\000\000\r\169\000\000\007\238\t\153\t\153\014\137\000\000\000\000\000\000\014\137\r\169\r\169\000\000\000\000\r\169\t\153\000\000\000\000\t\153\000\000\014\137\031\230\000\000\t\153\t\153\000\238\000\000\000\000\000\000\000\000\000\000\000\000\r\169\000\000\000\000\000\000\000\000\000\000\000\000\t\153\000\000\000\000\000\000\t\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\153\t\153\t\153\000\000\t\153\t\153\000\000\000\000\003\022\002\198\000\000\000\000\002\146\000\000\007>\t\153\000\000\002\254\t\153\000\000\000\000\000\000\t\153\000\000\000\000\000\000\000\000\001\210\000\000\007^\000\000\000\000\000\000\t\153\003\026\000\000\000\000\t\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\189\000\000\003&\000\000\000\000\000\000\000\000\000\000\t\206\001\190\000\000\000\000\007\229\000\000\000\000\002\186\000\000\000\000\004\014\000\000\000\000\000\000\004\018\000\000\004\026\000\000\t\222\005\182\011B\000\000\000\000\007\229\000\000\000\000\000\000\007\229\000\000\000\000\000\000\005\186\000\000\000\000\011\170\011\242\012\n\011\194\012\"\005\194\005\198\000\000\000\000\003\189\000\000\000\000\000\000\000\000\012:\012R\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\189\012j\000\000\003\189\000\000\005\202\000\000\000\000\000\000\000\238\000\000\004\138\000\000\000\000\000\000\000\000\000\000\000\000\011Z\011\218\012\130\012\154\012\202\000\000\000\000\000\000\001\173\000\000\000\000\007\229\012\226\001\173\000\000\001\206\001\173\000\000\000\000\000\000\000\000\012\250\000\000\000\000\t\249\000\000\001\173\000\000\000\000\000\000\001\173\000\000\001\173\000\000\000\000\000\000\rZ\000\000\rr\012\178\000\000\000\000\000\000\000\000\001\173\r\018\000\000\000\000\000\000\000\000\001\173\000\000\000\000\r*\rB\000\000\000\000\000\000\000\000\000\000\002\170\000\000\001\173\000\000\020V\001\173\000\000\000\000\000\000\000\000\001\173\001\173\001\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011B\000\000\000\000\000\000\020Z\000\000\001\173\001\173\000\000\000\000\004\230\000\000\000\000\000\000\011\170\011\242\012\n\011\194\012\"\000\000\001\173\001\173\000\000\000\000\001\173\001\173\000\000\000\000\012:\012R\000\000\000\000\000\000\000\000\000\000\001\173\000\000\000\000\000\000\000\000\012j\000\000\001\173\000\000\000\000\000\000\000\000\001\173\000\238\000\000\000\000\000\000\000\000\001\173\000\000\000\000\000\000\011Z\011\218\012\130\012\154\012\202\000\000\000\000\000\000\005-\000\000\000\000\000\000\012\226\000\246\001\202\001\206\002\"\000\000\000\000\000\000\000\000\012\250\000\000\000\000\000\000\000\000\021\182\000\000\000\000\000\000\005-\000\000\003v\001\210\001\250\001\230\rZ\020^\rr\012\178\020n\000\000\000\000\001\242\021\186\r\018\000\000\000\000\000\000\000\000\021\226\000\000\000\000\r*\rB\000\000\000\000\000\000\000\000\001\246\002\162\000\000\000\000\000\000\002\174\021\006\002\186\0046\004B\000\000\021\030\000\000\000\000\004N\006\137\006\137\000\000\000\000\000\000\006\137\000\000\000\000\006\137\000\000\000\000\000\000\022\130\000\000\000\000\000\000\004R\000\000\006\137\000\000\006\137\000\000\006\137\000\000\006\137\000\000\021:\022\150\000\000\000\000\005-\005-\000\000\000\000\000\000\000\000\006\137\000\000\000\000\000\000\000\000\000\000\006\137\006\137\000\000\000\000\000\000\000\000\022\166\000\000\000\000\b\158\000\000\004\134\006\137\004\138\000\000\006\137\000\000\000\000\000\000\000\000\006\137\006\137\000\238\006\133\007\194\000\000\000\000\000\000\006\133\000\000\000\000\006\133\000\000\000\000\000\000\000\000\006\137\000\000\000\000\000\000\006\137\006\133\000\000\006\133\000\000\006\133\000\000\006\133\000\000\000\000\006\137\006\137\006\137\000\000\006\137\006\137\000\000\000\000\000\000\006\133\000\000\000\000\000\000\000\000\000\000\006\133\bB\000\000\006\137\000\000\000\000\000\000\006\137\000\000\000\000\000\000\000\000\006\133\000\000\000\000\006\133\000\000\000\000\006\137\000\000\006\133\006\133\000\238\014\153\014\153\000\000\000\000\000\000\014\153\000\000\000\000\014\153\000\000\000\000\000\000\000\000\006\133\000\000\000\000\000\000\006\133\014\153\000\000\014\153\000\000\014\153\000\000\014\153\000\000\000\000\006\133\006\133\006\133\000\000\006\133\006\133\000\000\000\000\000\000\014\153\000\000\000\000\000\000\000\000\000\000\014\153\014\153\000\000\006\133\000\000\000\000\000\000\006\133\000\000\000\000\000\000\000\000\014\153\000\000\000\000\014\153\000\000\000\000\006\133\000\000\014\153\014\153\000\238\014\157\014\157\000\000\000\000\000\000\014\157\000\000\000\000\014\157\000\000\000\000\000\000\000\000\014\153\000\000\000\000\000\000\014\153\014\157\000\000\014\157\000\000\014\157\000\000\014\157\000\000\000\000\014\153\014\153\014\153\000\000\014\153\014\153\000\000\000\000\000\000\014\157\000\000\000\000\000\000\000\000\000\000\014\157\bB\000\000\014\153\000\000\000\000\000\000\014\153\000\000\000\000\000\000\000\000\014\157\000\000\000\000\014\157\000\000\000\000\014\153\000\000\014\157\014\157\000\238\006\157\007\194\000\000\000\000\000\000\006\157\000\000\000\000\006\157\000\000\000\000\000\000\000\000\014\157\000\000\000\000\000\000\014\157\006\157\000\000\006\157\000\000\006\157\000\000\006\157\000\000\000\000\014\157\014\157\014\157\000\000\014\157\014\157\000\000\000\000\000\000\006\157\000\000\000\000\000\000\000\000\000\000\006\157\bB\000\000\014\157\000\000\000\000\000\000\014\157\000\000\000\000\000\000\000\000\006\157\000\000\000\000\006\157\000\000\000\000\014\157\000\000\006\157\006\157\000\238\006\161\006\161\000\000\000\000\000\000\006\161\000\000\000\000\006\161\000\000\000\000\000\000\000\000\006\157\000\000\000\000\000\000\006\157\006\161\000\000\006\161\000\000\006\161\000\000\006\161\000\000\000\000\006\157\006\157\006\157\000\000\006\157\006\157\000\000\000\000\000\000\006\161\000\000\000\000\000\000\000\000\000\000\006\161\006\161\000\000\006\157\000\000\000\000\000\000\006\157\000\000\000\000\000\000\000\000\006\161\000\000\000\000\006\161\000\000\000\000\006\157\000\000\006\161\006\161\006\161\006\129\007\194\000\000\000\000\000\000\006\129\000\000\000\000\006\129\000\000\000\000\000\000\000\000\006\161\000\000\000\000\000\000\006\161\006\129\000\000\006\129\000\000\006\129\000\000\006\129\000\000\000\000\006\161\006\161\006\161\000\000\006\161\006\161\000\000\000\000\000\000\006\129\000\000\000\000\000\000\000\000\000\000\006\129\bB\000\000\006\161\000\000\000\000\000\000\006\161\000\000\000\000\000\000\000\000\006\129\000\000\000\000\006\129\000\000\000\000\bj\000\000\006\129\006\129\000\238\003\245\000\000\000\000\000\000\000\000\003\245\000\000\001\206\003\245\000\000\000\000\000\000\000\000\006\129\000\000\000\000\000\000\006\129\003\245\000\000\000\000\000\000\003\245\000\000\003\245\000\000\000\000\006\129\006\129\006\129\000\000\006\129\006\129\000\000\000\000\000\000\003\245\000\000\000\000\000\000\000\000\000\000\003\245\000\000\000\000\006\129\000\000\000\000\003\241\006\129\000\000\000\000\002\170\003\241\003\245\001\206\003\241\003\245\000\000\000\000\006\129\000\000\003\245\003\245\003\245\000\000\003\241\000\000\000\000\000\000\003\241\000\000\003\241\000\000\000\000\000\000\000\000\000\000\003\245\003\245\000\000\000\000\004\230\000\000\003\241\000\000\000\000\000\000\000\000\000\000\003\241\000\000\003\245\003\245\000\000\000\000\003\245\003\245\000\000\000\000\002\170\000\000\003\241\000\000\000\000\003\241\000\000\003\245\000\000\000\000\003\241\003\241\003\241\000\000\003\245\0011\000\000\000\000\000\000\003\245\0011\000\000\000\000\0011\000\000\003\245\003\241\003\241\000\000\000\000\004\230\000\000\000\000\0011\000\000\0011\000\000\0011\000\000\0011\003\241\003\241\000\000\000\000\003\241\003\241\000\000\000\000\000\000\000\000\000\000\0011\000\000\000\000\000\000\003\241\000\000\0011\007\237\000\000\000\000\0011\003\241\007\237\000\000\000\000\007\237\003\241\000\000\0011\000\000\000\000\0011\003\241\000\000\000\000\007\237\0011\0011\000\238\007\237\001-\007\237\000\000\000\000\000\000\001-\0011\000\000\001-\000\000\000\000\000\000\0011\007\237\000\000\000\000\0011\000\000\001-\007\237\001-\000\000\001-\000\000\001-\000\000\0011\0011\0011\000\000\0011\0011\000\000\000\000\007\237\000\000\001-\000\000\000\000\007\237\007\237\0011\001-\000\000\000\000\000\000\001-\000\000\0011\000\000\000\000\000\000\000\000\000\000\001-\007\237\000\000\001-\000\000\0011\000\000\000\000\001-\001-\000\238\000\000\000\000\000\000\000\000\007\237\007\237\020\182\001-\007\237\007\237\000\000\000\000\000\000\001-\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\021\246\000\000\000\000\007\237\001-\001-\001-\001i\001-\001-\000\000\000\000\001i\000\000\r\233\001i\000\000\000\000\000\000\001-\000\000\000\000\000\000\r\233\000\000\001i\001-\001i\000\000\001i\000\000\001i\000\000\000\000\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\001i\000\000\000\000\000\000\000\000\000\000\001i\r\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\233\000\000\000\000\000\000\000\000\001i\000\000\000\000\000\000\000\000\001i\001i\001i\001\029\000\000\000\000\000\000\000\000\001\029\000\000\002\025\001\029\000\000\000\000\000\000\000\000\001i\000\000\000\000\002\025\r\233\001\029\000\000\001\029\000\000\001\029\000\000\001\029\000\000\000\000\001i\001i\001i\000\000\001i\001i\000\000\000\000\000\000\001\029\000\000\000\000\000\000\000\000\000\000\001\029\002\025\000\000\000\000\000\000\000\000\001\185\001i\000\000\000\000\002\025\001\185\000\000\018\178\001\185\001\029\002\146\000\000\001i\000\000\001\029\001\029\001\029\000\000\001\185\000\000\000\000\000\000\001\185\000\000\001\185\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\000\000\002\025\000\000\001\185\000\000\000\000\000\000\000\000\000\000\001\185\000\000\001\029\001\029\001\029\000\000\001\029\001\029\000\000\018\182\000\000\000\000\001\185\000\000\000\000\001\185\000\000\000\000\000\000\0075\001\185\001\185\000\000\018\194\001\029\000\000\002\198\000\000\000\000\002\146\000\000\000\000\000\000\000\000\002\254\001\029\001\185\000\000\000\000\0075\001\185\000\000\000\000\000\000\001\210\000\000\000\000\000\000\003\002\005\198\001\185\001\185\000\000\000\000\001\185\001\185\000\000\003\006\000\000\003\166\000\000\000\000\000\000\000\000\000\000\001\185\003\226\003\230\000\000\000\000\003\246\001\190\001\185\000\000\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\001\185\b\218\b\222\b\234\000\000\000\000\005\182\000\000\006\002\000\000\000\000\000\000\000\000\000\000\003\022\002\198\000\000\000\000\002\146\000\000\007>\000\000\000\000\002\254\000\000\000\000\005\194\005\198\006\006\000\000\004\022\000\000\000\000\001\210\000\000\007^\000\000\000\000\000\000\000\000\003\026\000\000\000\000\t\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\202\b\242\003&\000\000\000\000\t\n\004\138\000\000\0032\001\190\000\000\000\000\000\000\000\000\000\000\002\186\000\000\000\000\004\014\000\000\000\000\000\000\004\018\000\000\004\026\005\170\t\222\005\182\000\000\000\000\nY\000\000\000\000\000\000\000\000\000\000\003\022\002\198\000\000\005\186\002\146\000\000\007>\000\000\000\000\002\254\000\000\005\194\005\198\000\000\006\n\025\206\nY\000\000\000\000\001\210\006\022\007^\000\000\000\000\000\000\000\000\003\026\000\000\000\000\t\162\000\000\000\000\000\000\006\214\028*\000\000\005\202\027^\007*\003&\t\138\000\000\004\138\000\000\000\000\0032\001\190\000\000\000\000\000\000\000\000\000\000\002\186\000\000\000\000\004\014\000\000\000\000\000\000\004\018\000\000\004\026\005\170\t\222\005\182\000\000\000\000\000\000\000\000\000\000\000\000\002\001\002\001\000\000\000\000\002\001\005\186\000\000\000\000\000\000\002\001\000\000\000\000\000\000\005\194\005\198\000\000\006\n\000\000\000\000\002\001\000\000\000\000\006\022\000\000\000\000\000\000\002\001\000\n\000\000\005%\000\000\000\000\000\000\000\000\005%\000\000\000\000\005%\005\202\002\001\nY\000\000\000\000\000\000\004\138\002\001\002\001\005%\000\000\000\000\000\000\005%\002\001\005%\000\000\002\001\000\000\000\000\002\001\002\001\000\000\002\001\002\001\000\000\002\001\005%\000\000\000\000\000\000\000\000\000\000\005%\000\000\000\000\000\000\005%\002\001\000\000\000\000\000\000\000\000\000\000\000\000\005%\002\001\002\001\005%\002\001\000\000\000\000\000\000\005%\002\234\002\001\000\000\000\000\000\000\000\000\000\000\000\000\005%\005%\000\000\000\000\000\000\000\000\000\000\005%\005%\002\001\000\000\005%\000\000\002\001\000\000\002\001\000\000\007]\000\000\000\000\000\000\005%\005%\000\000\002\198\005%\005%\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\005%\007]\000\000\000\000\000\000\000\000\001\210\005%\000\000\000\000\003\002\000\000\029R\000\000\000\000\000\000\000\000\000\000\005%\003\006\000\000\003\166\000\000\000\000\000\000\000\000\000\000\000\000\003\226\003\230\000\000\000\000\003\246\001\190\000\000\000\000\000\000\000\000\000\000\002\186\000\000\000\000\003\254\000\000\000\000\000\000\b\218\b\222\b\234\000\000\000\000\005\182\t%\000\000\000\000\000\000\000\000\t%\000\000\000\000\t%\000\000\000\000\000\000\000\000\000\000\000\000\001\202\001\206\000\000\t%\005\194\005\198\000\000\t%\000\000\t%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\001\250\t%\000\000\000\000\000\000\000\000\000\000\t%\000\000\005\202\b\242\t%\000\000\000\000\t\n\004\138\000\000\000\000\000\000\t%\000\000\000\000\t%\000\000\000\000\001\246\002\170\t%\t%\000\238\002\174\000\000\002\186\0046\004B\000\000\t%\t%\000\000\004N\000\000\018\206\000\000\t%\000\000\t!\000\000\t%\000\000\000\000\t!\000\000\000\000\t!\000\000\000\000\004R\t%\t%\t%\000\000\t%\t%\t!\000\000\000\000\000\000\t!\003\233\t!\000\000\000\000\t%\003\233\000\000\000\000\003\233\000\000\000\000\t%\000\000\t!\000\000\000\000\000\000\000\000\003\233\t!\000\000\000\000\003\233\t!\003\233\000\000\000\000\000\000\000\000\000\000\000\000\t!\000\000\000\000\t!\000\000\003\233\018\202\000\000\t!\t!\000\238\003\233\000\000\000\000\000\000\000\000\000\000\t!\t!\000\000\000\000\000\000\000\000\003\233\t!\000\000\003\233\000\000\t!\000\000\000\000\003\233\003\233\003\233\000\000\000\000\000\000\000\000\t!\t!\t!\000\000\t!\t!\000\000\000\000\000\000\003\233\000\000\000\000\000\000\003\233\000\000\t!\000\000\000\000\000\000\000\000\000\000\000\000\t!\003\233\003\233\029Z\000\000\003\233\003\233\000\000\000\000\000\000\000\000\003\022\002\198\000\000\000\000\002\146\003\233\007>\000\000\000\000\002\254\000\000\019*\003\233\000\000\000\000\000\000\000\000\003\233\000\000\001\210\000\000\007^\000\000\003\233\000\000\000\000\003\026\000\000\000\000\t\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003&\000\000\000\000\000\000\000\000\000\000\t\206\001\190\000\000\000\000\007\185\007\185\000\000\002\186\000\000\000\000\004\014\000\000\000\000\000\000\004\018\000\000\004\026\000\000\t\222\005\182\004F\000\000\000\000\007\185\007\185\007\185\003\022\002\198\000\000\000\000\002\146\005\186\007>\007\185\000\000\002\254\000\000\000\000\000\000\005\194\005\198\000\000\000\000\r\150\000\000\001\210\000\000\007^\000\000\007\185\007\185\000\000\003\026\000\000\007\185\t\162\007\185\007\185\007\185\000\000\000\000\000\000\026f\007\185\005\202\003&\000\000\000\000\000\000\000\000\004\138\t\206\001\190\000\000\000\000\000\000\000\000\000\000\002\186\000\000\007\185\004\014\000\000\000\000\000\000\004\018\000\000\004\026\000\000\t\222\005\182\000\000\000\000\000\000\000\000\000\000\000\000\005\r\005\r\000\000\000\000\005\r\005\186\000\000\000\000\000\000\005\r\000\000\000\000\000\000\005\194\005\198\005\r\000\000\r\150\000\000\005\r\004:\000\000\007\185\000\000\000\000\000\000\005\r\027\022\000\000\000\000\027.\000\000\000\000\000\000\000\000\000\000\026\198\000\000\005\202\005\r\000\000\000\000\000\000\000\000\004\138\005\r\005\r\000\000\007\181\007\181\000\000\000\000\005\r\000\000\000\000\005\r\000\000\000\000\000\238\005\r\000\000\005\r\005\r\000\000\005\r\0292\000\000\007\181\007\181\007\181\000\000\003\022\002\198\000\000\000\000\002\146\005\r\007\181\000\000\000\000\002\254\000\000\000\000\000\000\005\r\005\r\000\000\006\238\000\000\000\000\001\210\000\000\000\000\007\181\007\181\000\000\000\000\003\026\007\181\000\000\007\181\007\181\007\181\003\233\000\000\000\000\000\000\007\181\003\233\005\r\003&\003\233\000\000\000\000\000\000\005\r\0032\001\190\000\000\000\000\000\000\003\233\000\000\002\186\007\181\003\233\004\014\003\233\000\000\000\000\004\018\000\000\004\026\005\170\000\000\005\182\000\000\000\000\000\000\003\233\018\202\000\000\000\000\000\000\000\000\003\233\000\000\005\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\194\005\198\003\233\006\n\000\000\003\233\000\000\000\000\000\000\006\022\003\233\003\233\003\233\005>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\202\003\233\000\000\r\225\t\138\003\233\004\138\000\000\r\225\000\000\000\000\r\225\000\000\000\000\000\000\003\233\003\233\029\138\000\000\003\233\003\233\r\225\000\000\000\000\006\162\r\225\000\000\r\225\000\000\000\000\001\202\001\206\000\000\005\201\000\000\000\000\019*\003\233\000\000\r\225\000\000\000\000\003\233\000\000\000\000\r\225\000\000\000\000\000\000\001\210\001\250\001\230\000\000\000\000\000\000\000\000\000\000\r\225\000\000\001\242\r\225\000\000\006N\000\000\000\000\r\225\r\225\000\000\003\022\002\198\000\000\000\000\002\146\000\000\000\000\001\246\002\162\002\254\000\000\000\000\002\174\r\225\002\186\0046\004B\r\225\000\000\001\210\000\000\004N\000\000\000\000\000\000\000\000\003\026\r\225\r\225\002\138\000\000\r\225\r\225\000\000\000\000\000\000\000\000\000\000\004R\003&\000\000\000\000\r\225\000\000\000\000\0032\001\190\000\000\000\000\r\225\000\000\000\000\002\186\000\000\000\000\004\014\000\000\000\000\000\000\004\018\r\225\004\026\005\170\000\000\005\182\006\150\000\000\000\000\000\000\000\000\000\000\003\022\002\198\000\000\000\000\002\146\005\186\000\000\000\000\000\000\002\254\000\000\000\000\000\000\005\194\005\198\000\000\006\n\000\000\000\000\001\210\000\000\000\000\006\022\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\202\003&\000\000\000\000\000\000\006\182\004\138\0032\001\190\000\000\000\000\003\022\002\198\000\000\002\186\002\146\000\000\004\014\000\000\000\000\002\254\004\018\000\000\004\026\005\170\000\000\005\182\000\000\000\000\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\003\026\005\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\194\005\198\000\000\006\n\003&\000\000\000\000\000\000\014&\006\022\0032\001\190\000\000\000\000\003\022\002\198\000\000\002\186\002\146\000\000\004\014\000\000\000\000\002\254\004\018\005\202\004\026\005\170\000\000\005\182\000\000\004\138\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\003\026\005\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\194\005\198\000\000\006\n\003&\000\000\000\000\000\000\0142\006\022\0032\001\190\000\000\000\000\003\022\002\198\000\000\002\186\002\146\000\000\004\014\000\000\000\000\002\254\004\018\005\202\004\026\005\170\000\000\005\182\000\000\004\138\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\003\026\005\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\194\005\198\000\000\006\n\003&\000\000\000\000\000\000\014>\006\022\0032\001\190\000\000\000\000\003\022\002\198\000\000\002\186\002\146\000\000\004\014\000\000\000\000\002\254\004\018\005\202\004\026\005\170\000\000\005\182\000\000\004\138\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\003\026\005\186\000\000\000\000\000\000\000\000\006!\000\000\000\000\005\194\005\198\006!\006\n\003&\006!\000\000\000\000\000\000\006\022\0032\001\190\000\000\000\000\000\000\006!\000\000\002\186\000\000\006!\004\014\006!\000\000\000\000\004\018\005\202\004\026\005\170\000\000\005\182\000\000\004\138\000\000\006!\000\000\000\000\000\000\000\000\000\000\006!\000\000\005\186\000\000\000\000\000\000\000\000\000\000\000\000\b\158\005\194\005\198\006!\006\n\000\000\006!\000\000\000\000\000\000\006\022\006!\006!\000\238\000\000\006)\000\000\000\000\000\000\000\000\006)\000\000\000\000\006)\000\000\000\000\005\202\006!\006!\000\000\000\000\006!\004\138\006)\000\000\000\000\000\000\006)\000\000\006)\000\000\006!\006!\000\000\000\000\006!\006!\000\000\000\000\000\000\000\000\006)\000\000\000\000\000\000\000\000\000\000\006)\000\000\000\000\000\000\000\000\000\000\006!\000\000\000\000\b\158\000\000\003\233\006)\000\000\000\000\006)\003\233\006!\000\000\003\233\006)\006)\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003\233\000\000\000\000\000\000\003\233\006\229\003\233\006)\006)\000\000\006\229\006)\000\000\006\229\000\000\000\000\000\000\000\000\003\233\018\202\000\000\006)\006)\006\229\003\233\006)\006)\006\229\000\000\006\229\000\000\000\000\000\000\000\000\000\000\000\000\003\233\000\000\000\000\003\233\000\000\006\229\000\000\006)\003\233\003\233\003\233\006\229\000\000\000\000\000\000\000\000\000\000\000\000\006)\000\000\000\000\000\000\000\000\006\229\003\233\000\000\006\229\000\000\003\233\000\000\000\000\006\229\006\229\000\238\000\000\000\000\000\000\000\000\003\233\003\233\021\134\000\000\003\233\003\233\000\000\000\000\000\000\006\229\000\000\r\225\000\000\006\229\000\000\000\000\r\225\000\000\000\000\r\225\000\000\019*\003\233\006\229\006\229\025Z\000\000\006\229\006\229\r\225\000\000\000\000\000\000\r\225\000\000\r\225\000\000\000\000\006\229\000\000\000\000\005\201\000\000\000\000\000\000\006\229\000\000\r\225\000\000\000\000\000\000\000\000\000\000\r\225\000\000\000\000\006\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0079\000\000\000\000\r\225\000\000\000\000\003\022\002\198\r\225\r\225\002\146\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\0079\000\000\000\000\000\000\r\225\001\210\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\000\000\r\225\r\225\002\138\000\000\r\225\r\225\000\000\003&\000\000\000\000\000\000\000\000\000\000\0032\001\190\r\225\000\000\000\000\000\000\030F\002\186\000\000\r\225\004\014\000\000\000\000\000\000\004\018\000\000\004\026\005\170\000\000\005\182\r\225\000\000\000\000\000\000\007\241\007\194\000\000\000\000\000\000\007\241\000\000\005\186\007\241\000\000\000\000\000\000\000\000\000\000\000\000\005\194\005\198\000\000\007\241\000\000\000\000\000\000\007\241\001\189\007\241\000\000\000\000\000\000\001\189\000\000\000\000\001\189\000\000\000\000\000\000\000\000\007\241\000\000\000\000\000\000\005\202\001\189\007\241\bB\000\000\001\189\004\138\001\189\000\000\000\000\000\000\000\000\000\000\000\000\007\241\000\000\000\000\007\241\000\000\001\189\000\000\000\000\007\241\007\241\000\238\001\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\225\001\189\007\241\000\000\001\189\r\225\007\241\000\000\r\225\001\189\001\189\000\000\000\000\000\000\000\000\000\000\007\241\007\241\r\225\000\000\007\241\007\241\r\225\006\233\r\225\001\189\000\000\000\000\006\233\001\189\005\201\006\233\000\000\000\000\000\000\000\000\r\225\000\000\007\241\001\189\001\189\006\233\r\225\001\189\001\189\006\233\000\000\006\233\000\000\000\000\000\000\000\000\000\000\000\000\001\189\000\000\000\000\r\225\000\000\006\233\000\000\001\189\r\225\r\225\000\000\006\233\0256\000\000\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\000\000\000\006\233\r\225\000\000\006\233\000\000\000\000\000\000\000\000\006\233\006\233\000\238\000\000\000\000\000\000\000\000\r\225\r\225\002\138\000\000\r\225\r\225\000\000\000\000\000\000\006\233\000\000\000\000\000\000\006\233\000\000\r\225\000\000\000\000\000\000\030~\000\000\000\000\r\225\006\233\006\233\000\000\000\000\006\233\006\233\r\153\000\000\002\198\r\153\r\225\031\246\000\000\000\000\000\000\006\233\031\250\000\000\000\000\r\153\000\000\000\000\006\233\000\000\005%\r\153\000\000\000\000\000\000\005%\000\000\000\000\005%\006\233\000\000\000\000\000\000\r\153\000\000\000\000\000\000\000\000\005%\r\153\000\000\000\000\005%\000\000\005%\000\000\000\000\000\000\001\002\001\190\000\000\r\153\000\000\000\000\r\153\000\000\005%\000\000\000\000\r\153\000\000\005%\005%\000\000\005%\000\000\000\000\031\254\000\000\000\000\000\000\b\158\000\000\000\000\005%\r\153\000\000\005%\005%\r\153\005%\000\000\005%\002\234\000\238\000\000\000\000\000\000 \002\r\153\r\153\000\000\005%\r\153\000\000\000\000\000\000\000\000\005%\005%\007\194\000\000\005%\000\000\005%\tU\tU\005%\000\000\tU\000\000\r\153\005%\005%\tU\000\000\005%\005%\005%\002\234\019r\005%\000\000\005%\tU\000\000\000\000\007\238\000\000\000\000\000\000\tU\000\000\000\000\005%\005%\000\000\000\000\000\000\000\000\000\000\005%\bB\000\000\tU\005%\000\000\000\000\005%\005%\tU\tU\005%\005%\000\000\000\000\005%\tU\000\000\bV\tU\005%\002\234\000\238\tU\000\000\tU\tU\000\000\tU\005%\000\000\000\000\000\000\000\000\000\000\000\000\005%\000\000\001U\000\000\tU\000\000\000\000\001U\000\000\000\000\001U\000\000\tU\tU\005%\005%\000\000\000\000\005%\005%\001U\000\000\001U\000\000\001U\000\000\001U\000\209\000\000\000\000\000\000\000\000\000\209\000\000\000\000\000\209\005%\tU\001U\000\000\000\000\000\000\000\000\tU\001U\000\209\000\000\005%\000\000\000\209\000\213\000\209\000\000\000\000\000\000\000\213\000\000\000\000\000\213\001U\000\000\000\000\000\000\000\209\001U\001U\000\238\000\000\000\213\000\209\000\000\000\000\000\213\000\000\000\213\000\000\000\000\000\000\000\000\000\000\001U\000\209\000\000\000\000\000\209\000\000\000\213\000\000\000\000\000\209\000\209\000\238\000\213\000\000\001U\001U\001U\000\000\001U\001U\000\000\000\000\000\000\000\000\000\213\000\209\000\000\000\213\000\000\000\209\000\000\000\000\000\213\000\213\000\238\000\000\001U\000\000\000\000\000\209\000\209\000\000\000\000\000\209\000\209\000\000\000\000\001U\000\213\000\000\000\000\000\000\000\213\000\000\001\202\002\142\000\000\000\000\002\146\000\000\000\000\000\209\000\213\000\213\000\000\000\000\000\213\000\213\000\000\000\000\000\000\000\000\000\209\001\210\001\250\001\230\002\150\000\000\000\000\000\000\000\000\000\000\000\000\001\242\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\000\000\000\000\000\000\002\154\002\162\000\000\001\202\001\206\002\174\000\000\002\186\0046\004B\007\237\000\000\000\000\000\000\025\014\007\237\025\018\000\000\007\237\000\000\000\000\000\000\001\210\001\250\000\000\000\000\000\000\000\000\007\237\000\000\000\000\004R\007\237\000\000\007\237\000\000\000\000\000\000\000\000\000\000\005\198\000\000\000\000\000\000\000\000\000\000\007\237\000\000\001\246\002\178\000\000\025\030\007\237\002\174\000\000\002\186\0046\004B\000\000\000\000\000\000\000\000\004N\000\000\007\237\000\000\000\000\007\237\025\"\006\221\000\000\000\000\007\237\007\237\006\221\000\000\000\000\006\221\000\000\004R\000\000\000\000\029\234\000\000\021b\000\000\000\000\006\221\007\237\000\000\000\000\006\221\007\237\006\221\000\000\000\000\000\000\000\000\000\000\029\214\000\000\000\000\007\237\007\237\020\182\006\221\007\237\007\237\000\000\000\000\000\000\006\221\0061\007\194\000\000\000\000\000\000\0061\000\000\000\000\0061\000\000\000\000\006\221\007\237\000\000\006\221\000\000\000\000\000\000\0061\006\221\006\221\000\000\0061\000\000\0061\000\000\000\000\001\202\002\142\000\000\000\000\002\146\000\000\000\000\000\000\006\221\0061\000\000\000\000\006\221\000\000\000\000\0061\bB\000\000\000\000\001\210\001\250\001\230\006\221\006\221\000\000\000\000\006\221\006\221\000\000\001\242\0061\000\000\000\000\000\000\000\000\0061\0061\000\238\000\000\000\000\000\000\000\000\000\000\000\000\006\221\002\154\002\162\000\000\001\202\001\206\002\174\0061\002\186\0046\004B\004\229\000\000\000\000\000\000\025\014\004\229\030*\000\000\004\229\000\000\0061\0061\001\210\001\250\0061\0061\000\000\000\000\004\229\000\000\000\000\004R\004\229\000\000\004\229\000\000\000\000\000\000\000\000\000\000\005\198\000\000\0061\000\000\000\000\000\000\004\229\000\000\001\246\002\178\000\000\0306\004\229\002\174\000\000\002\186\0046\004B\000\000\000\000\000\000\000\000\004N\000\000\004\229\000\000\000\000\004\229\025\"\n\170\000\000\000\000\004\229\000\000\000\000\001\202\001\206\000\000\000\000\004R\000\000\000\000\005\153\000\000\000\000\000\000\000\000\000\000\004\229\002\158\000\000\000\000\004\229\000\000\001\210\001\250\001\230\000\000\000\000\029\214\000\000\000\000\004\229\004\229\001\242\000\000\004\229\004\229\005\005\000\000\000\000\002\002\000\000\005\005\000\000\000\000\005\005\000\000\000\000\000\000\001\246\002\162\000\000\000\000\004\229\002\174\005\005\002\186\0046\004B\005\005\004\237\005\005\000\000\004N\028J\004\237\000\000\000\000\004\237\000\000\000\000\000\000\000\000\005\005\000\000\000\000\000\000\000\000\004\237\005\005\004R\000\000\004\237\005\029\004\237\000\000\000\000\000\000\005\029\000\000\000\000\005\029\000\000\000\000\005\005\000\000\004\237\000\000\000\000\005\005\000\000\005\029\004\237\000\000\000\000\005\029\000\000\005\029\000\000\000\000\018\186\000\000\000\000\000\000\000\000\005\005\000\000\004\237\000\000\005\029\000\000\000\000\004\237\000\000\000\000\005\029\000\000\000\000\000\000\005\005\005\005\000\000\000\000\005\005\005\005\000\000\000\000\000\000\004\237\000\000\005\029\000\000\n\182\000\000\000\000\005\029\000\000\000\000\001\202\001\206\000\000\005\005\004\237\004\237\000\000\000\000\004\237\004\237\000\000\000\000\000\000\005\029\0222\000\000\004\022\000\000\000\000\001\210\001\250\001\230\000\000\000\000\000\000\000\000\004\237\005\029\005\029\001\242\000\000\005\029\005\029\0059\000\000\000\000\000\000\024z\000\246\000\000\000\000\002\202\000\000\000\000\000\000\001\246\002\162\000\000\000\000\005\029\002\174\003r\002\186\0046\004B\0059\000\000\003v\b\181\004N\024\250\b\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\130\000\000\000\000\000\000\000\000\000\000\020\162\004R\b\181\b\181\000\000\b\181\b\181\000\000\000\000\000\000\000\000\000\000\028v\000\000\000\000\021\006\000\000\000\000\000\000\000\000\021\030\000\000\b\137\000\000\000\000\b\137\b\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021&\000\000\004\134\000\000\004\138\b\137\b\137\000\000\b\137\b\137\000\000\000\238\000\000\000\000\021:\021v\000\000\000\000\0059\0059\000\000\000\000\000\000\000\000\000\000\b\185\000\000\000\000\b\185\b\137\000\000\000\000\000\000\000\000\000\000\000\000\025\182\000\000\000\000\000\000\000\000\b\181\000\000\b\181\b\185\b\185\000\000\b\185\b\185\000\000\b\137\000\000\000\000\000\000\000\000\000\000\b\181\000\000\000\000\006J\b\181\000\000\000\000\000\000\b\181\000\000\b\181\000\000\b\185\000\000\b\181\b\165\000\000\000\000\b\165\000\000\000\000\001\202\001\206\000\000\b\137\000\000\b\137\000\000\000\000\000\000\000\000\000\000\000\000\000\238\b\165\b\165\000\000\b\165\b\165\b\137\001\210\001\250\006J\b\137\000\000\000\000\000\000\b\137\000\000\b\137\000\000\000\000\000\000\b\137\000\000\000\000\000\000\000\000\b\165\000\000\000\000\000\000\000\000\b\185\000\000\b\185\001\246\002\178\000\000\000\000\000\000\002\174\000\000\002\186\0046\004B\000\000\000\000\b\185\000\238\004N\006J\b\185\000\000\000\000\000\000\b\185\000\000\b\185\000\000\000\000\000\000\b\185\000\000\001\202\001\206\000\000\004R\000\000\000\000\005\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\165\000\000\b\165\000\000\001\210\001\250\001\230\000\000\029\214\000\000\000\000\000\000\000\000\000\000\001\242\006\146\000\000\022\214\006J\b\165\000\000\014\161\014\161\b\165\000\000\b\165\000\000\000\000\000\000\b\165\001\246\024.\000\000\023N\000\000\002\174\000\000\002\186\0046\004B\014\161\014\161\014\161\007\214\024>\000\000\000\000\000\000\000\000\000\000\014\161\000\000\000\000\000\000\000\000\000\000\000\000\001\202\001\206\026j\000\000\004R\000\000\000\000\000\000\000\000\014\161\014\161\000\000\000\000\000\000\014\161\000\000\014\161\014\161\014\161\001\210\001\214\001\230\000\000\014\161\000\000\000\000\000\000\000\000\000\000\001\242\000\000\000\000\000\000\000\000\000\000\000\000\001\202\001\206\026\202\000\000\014\161\000\000\000\000\000\000\000\000\001\246\002\162\001\202\001\206\000\000\002\174\000\000\002\186\0046\004B\001\210\001\214\001\230\000\000\004N\000\000\000\000\000\000\000\000\000\000\001\242\001\210\001\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004R\000\000\000\000\000\000\000\000\001\246\002\162\000\000\000\000\000\000\002\174\000\000\002\186\0046\004B\000\000\001\246\002\170\000\000\004N\000\000\002\174\000\000\002\186\0046\004B\000\000\000\000\000\000\000\000\004N\000\000\018\206\000\000\000\000\000\000\004R\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004R")) + ((16, "z\218\133\n\129v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\248\129v\000\000\000\000\021\000\129vz\218\003F\005F\0003\187\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\232\001\136\000\242\000\000\001\170\b\136\000\000\000\172\002\b\t\136\000\000\003$\002~\n\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\012\000\000\000\000\000\000\003\"\131\186\000\000\000\000\000\000\005\014\000\000\000\000\182j\004\006\003\196\000\000\000\000\180\176\005\014\000\000\133\n\021\000\129@\188@\004\176\000\000\021\000\141:\132\236\021\000\134d\000\000\001\022\000\000\134d\001\192\000\000xZ\000\000\001l\000\000\000\000\003\232\000\000\005\014\000\000\000\000\000\000\005P\000\000xZ\000\000\006\014\224\148\232\022\198\000\000\000\233\134\180\176\000\000\139v\229l\000\000\217H\026\184\131\186\129vz\218\000\000\000\000\132\236\021\000\135\220\134d\006j\224\148\000\000\230.\129vz\218\133\n\021\000\000\000\006\160\006V\000*\137\024\000\000\221n\000\000\142X\221n\000\000\142X\204\018\003\014\007\004\003*\000\000\004\228\000\000\007\014\000\000\000\000\007\014\000\000\000\000\000\000\142X\005\014\000\000\000\000\184\230\137\024\229l\007P\137\024\000\000\t\004\027\214\180\176\000\000\000\000\000\000\000\000\000\000\000\000\000F\000\000\000\000\175\156\237\248\139\128\229l\176\154\003\014\000\000\000\000\183B\238@\139\132\229l\177\152\178\150\179\148\185\170\007x\005\014\000\000\000\000\000\000\000\000\000\000\000\000\bJ\000\000\142X\000\000\001\b\215\158\000\000\137\024\006\b\137\024}T\000\000\021\000\000\000}v\000\000\007\b\nJ\000\000\0074\142X\n\216\000\000\011\030\000\000\004J\000\000\000\000\006\230\000\000\000\000\000\000 \212\138\002\000\000{\130\137\024!\212\t&\t\216\140~\011\016\n\180\000*\011\012\000\000\000\000\000\000\017\000\127\208\021\000\143\146\180\134\000\000\012\016\011\234\011\166\137\024\007\136\012\236\214\012\012F\rd\012\240\137\024\007\234\000\000\000\000\004\158\000\000\000\000\006\158\000\000\000\000\127\132\022\140\021\188\002\248\000\007\000\000\000\000\002&\000\000\129@\r\200\014\004\021\000\023\238\021\000z\218z\218\000\000\000\000\000\000\145\250\132\236\021\000\023\238\014\216\000\000\175`\021\000\141:\023\228\020\160\007\230\000\000\011j\bV\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\133\n\021\000\000\000x\238\214\182\136\182\001\000\141\246\223f\012J\016\170\017$\137\024\t\234\0178\129\218\012\158\017\180\017\206\137\024\n\170\000\000\000\000\198v\198v\000\000\007\230\000\000\000\028\000\000\000\000\022\150\137\024)\212!(\180\134\133\n\021\000\129\218\000\000\003\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\142\236\028\198\000\000\000\000\000\000\002\004\030\210\198v\000\000\000\000\129\218\017\228\215<\r\016\018^\018\020\137\024\n\228\000\000\000\000\129\218\000\000\000\000\000\000\000\000\133\n\021\000\180\134\129\218\000\000\018B\129\218\000\000\180\134\000\000\000\000\000\000\000\000\000\000\189b\215\202\rF\018\186\018H\137\024\n\234\000\000\000\000\129\218\000\000\000\000\190\224\216X\000\000\234\252\181z\127\132\003\170\003\170\000\000\019\016\129\218\000\000\024R\019*\000\000y\210\000\000\000\000\205\216\000\000\rJ\018\252\018\136\137\024\011&\000\000\000\000\129\218\000\000\000\000\235H\142X\000\000\011\136\000\000\000\000\216\230\000\000\235\206\003\160\000\000\000\000\000\000\000\000\000\000\236\020\019F\000\000|\158\000\000\000\000\213z\000\000\000\202\000\000\000\000|l\199\b\000\000\000\000\138>\020\160\022\146\025v\000\000\000\000\000\000\000\000\b8\000\000\000\000\129\218\000\000\000\000\000\000\028\"\217t\000\000\029\"\000\000\000\000\000\000\030\"\225P\r\142\019\014\018\150\137\024\011\170\000\000\000\000\129\218\000\000\000\000\031\"\018\174\225\136\r\158\0198\018\196\137\024\011\234\000\000\000\000\129\218\000\000\000\000\"\"\129\218\018\210\226\022\014\016\019F\018\206\137\024\012&\000\000\000\000\129\218\000\000\000\000#\"\186|\014F\019J\001\228\137\024\000\234\019\150\000\000\000\000\014J\019J\004\002\000\000\191$\146\182\132\236\021\000\023\238\000F\004\188\000\007\000\000\018\228\129@\193zx:\000F\004\188\004\188\129@\b\158\129@\000\000\206p\002^\134d\007\230\bV\2372\000\000\137\024\199\160\137\024\191\188\200\"\137\024\007\234\137\024\200\166\000\000\t\158\n\160\012\022\129@\206\242\000\000\t\210\b\160\188D\000\000\000\000\000\000\000\000\000\000\129@\207t\129@\207\246\021\002\003\014\192\128\bV\003\014\193\002\000\000\208x\002^\000\000\000\000\208\250\029\226\000\000\000\000\023\140\000\000\012\188\023\238\000\000\189,\175`\000\000\025z\000\000\000\000\129@\031\226\000\000\000\000\000\000\000\000\187\018\000\000\011X\000\000\137\160\0001\022J\143\216\022\238\131\206\133\n\021\000}\168\133\n\021\000\017\000\017\000\000\000\000\000\000\000\000\000\002\000\024\210y\228\000\000\133\198\134\130\132\236\021\000\023\238\005\228\129@\000\000\030\210\000\000\135>\135\250\223f\024F\137\024\n\228\000\000\017\000\0242\017\000\003\000\004\232\131X\133\n\021\000\000\000\201b\021\000\198v\180\134\025^\000\000\201b\021\000\130h\004F\000\000\180\134z\142\137\024\005\228\004\002\019\164\000\000\000\000\000\000\128x\003\170\019\170\000\000\129\218\000\000\000\000\201\240\000\000\000\000\n\204\229l\003\014\019\130\144\148\201b\021\000\198v \238\145P\014\142\019\140\000*\019\206\000\000\000\000\017\000\022\238\019\156\000\000\023\214\000\000\133\n\021\000\180\134$\"\000\000\133\n\021\000\017\000\023\238\000\000\000\000\000\000\000\000\146\012\201b\021\000\198v\000\000\000\000\017\000\014\158\019\158\000*\019\224\000\000\000\000\019\164\000\000\017\000\004\000\017\000\005\000\015\232\131X\201b\021\000\198vxv\131X\000\000!\238\146\200\015\016\019\170\000*\019\244\000\000\000\000\017\000\024\238\201b\021\000\198v\"\238\180\134\000\000\018\000\025\238\t:\000\000\000\000\000\000#\238\147\132\201b\021\000\198v$\238%\238\148@\201b\021\000\198v&\238'\238\000\000\019\000\026\238\148\252\201b\021\000\198v\000\000\000\000\000\000\129v\000\000\000\000\000\000\149\184\201b\021\000\198v(\238)\238\150t\201b\021\000\198v*\238+\238\1510\201b\021\000\198v,\238-\238\151\236\201b\021\000\198v.\238/\238\152\168\201b\021\000\198v0\2381\238\153d\201b\021\000\198v2\2383\238\154 \201b\021\000\198v4\2385\238\154\220\201b\021\000\198v6\2387\238\155\152\201b\021\000\198v8\2389\238\156T\201b\021\000\198v:\238;\238\157\016\201b\021\000\198v<\238=\238\157\204\201b\021\000\198v>\238?\238\158\136\201b\021\000\198v@\238A\238\159D\201b\021\000\198vB\238C\238\160\000\201b\021\000\198vD\238E\238\160\188\201b\021\000\198vF\238G\238\161x\201b\021\000\198vH\238I\238\1624\201b\021\000\198vJ\238K\238\162\240\015F\019\186\000*\020\002\000\000\000\000\017\000\027\238\201b\021\000\198vL\238M\238\163\172\201b\021\000\198vN\238O\238\021\000\223f\130h\000\000\000\000\131\186\003\170\019f\137\024\011\228\000\000\000\000\005\222\005\014\000\000\137\024\012L\000\000\000\000\019|\000\000\000\000\000\000\003\246\000\000\019\142\144\148\000\000\000\000\000\000\025F\137\024\012\228\000\000\000\000%\"\000\000\000\000\223\158\000\000\015J\019\230\019\130\137\024\r&\000\000\000\000\129\218\000\000\000\000&\"\218\002\000\000'\"\004\160\000\000\000\000\000\000\218H\218H\000\000\000\000\000\000P\238\189\214\132N\000\000\t*\000\000\006\000\164h\201b\021\000\198vQ\238R\238\131X\005\166\000\000\007\000\165$\201b\021\000\198vS\238T\238\131X\tJ\000\000\b\000\165\224\201b\021\000\198vU\238V\238\028\210\000\000\n\204\000\000\t\000\166\156\201b\021\000\198vW\238X\238\000\000\014\b\000\000\n\000\167X\201b\021\000\198vY\238Z\238\000\000\011\244\000\000\011\000\168\020\201b\021\000\198v[\238\\\238\011j\016\232\131X\r*\000\000\012\000\168\208\201b\021\000\198v]\238^\238\131X\014\012\000\000\r\000\169\140\201b\021\000\198v_\238`\238\131X\012\028\000\000\014\000\170H\201b\021\000\198va\238b\238\015\000\171\004\201b\021\000\198vc\238d\238\016\000\020\000\000\000\000\000\000\000\006\246\000\000\000\000\000\000\019\150\000\000\n\b\000\000\000\000\014\"\000\000\000\000\014\166\000\000\000\000\r\028\000\000\012j\017\232\131X\014*\000\000\131X\015\b\000\000\131X\015\028\000\000\000\000\201b\021\000\198ve\238f\238\000\000\020\024\000\000\000\000\000\000\000\000\000\000\000\000g\238\020\\\171\192\201b\021\000\198vh\238\172|\201b\021\000\198vi\238j\238k\238\1738\201b\021\000\198vl\238m\238\015*\000\000\131X\015\012\000\000\131X\015\198\000\000\173\244\015\158\020\016\000*\020`\000\000\000\000\017\000\028\238\201b\021\000\198vn\238o\238\000\000(\"\000\000\000\000\014\198\000\000\000\000\223f\000\000\000\000\218\240\016\012\000\000\000\000\137\160\000\000\015N\000\000\000\000\138\138\000\000\015\160\000\000\000\000\0001\rj\000\000\000\000\022\238\0242\007\230\000\000zZ\"(\026v\028&\000\000\000\000\016\028\000\000\000\000\002&\026\210\133x\000\000\029\238\000\000\012\198\000\000\000\000\016x\000\000\000\000\201b\021\000\198v\030L\202^\003\166\007d\000\000\000\000\014j\000\000\000\000\015\166\000\000\000\000\000\000\021\000\023\238\012X\000\000\000\000\021\188\002\248\000\007\006\228\023\238\226\\\135,\000\000\000L\023\238\226\198\020\004\000\000\000\000\006\228\000\000\023\230\020\196\021\192\000\000\015B\020~\000\000\020\132\003\234\229l\000\252\000\000\020\178\020Z\131\186\014T\137\024zv\020\226\016\152\020\226\000\000{\216\021d\000\000\000\252\000\000\000\000\021t\229l\193\132\000\000\203\000\237\192\015\222\229l\021B\229l\209|\194@\021D\229l\209\220\194\252\006\b\021\b\000\000\000\000\000\000\021\000\227<\000\000\223f\218H\000\000\000\000\021\176\000\000\000\000\000\000\201b\021\000\198vp\238q\238\000\000\017\012\000\000\000\000\000\000\132\236\021\000\023\238\003\228\000\000\142\212\000\000!$\000\000\000*\000\000\000\000\021\178\000\000\021\224\198vr\238\021\138\000\000\000\000\201b\021\000\198v\021\246\000\000\000\000\147r\000\000!\140\000\000\148.\000\000\021\000\000\000\129@\"$\000\000\203p\000\000\000\000\148\234\000\000\"\140\000\000\149\166\000\000\030\140\000\000\129@\"\210\000\000\230t\000\000\021\000\023\238\230t\000\000\030\020\023\228\020\160\005\014\232\144\129@\228\006\218H\000\000\002\248\005\248\000\007\006\228\218H\177b\002\248\000\007\006\228\218H\177b\000\000\000\000\006\228\218H\000\000\129vz\218\180\134\027\"\000\000\000\000\129vz\218\132\236\021\000\023\238\230t\000\000\003F\005F\0003\021,\131\186\016T\137\024\219~\021d\022\018\233\006\000\000\218H\000\000\220\030\023\230\020\196\021\192\224f\025T\015\206\002\n\016\162\021Z\021\000\218H\000\000\021\000\218H\000\000\204\018\236V\024b\000\246\002\248\003\014\218H\000\000\002\248\003\014\218H\000\000\031\020\023\228\020\160\005\014\210\184\129@\230z\000\000\002\248\006\162\024\188\003\176\000\000\218H\000\000\000\007\021\132\129@\230z\234\000\002\248\000\007\021\134\129@\230z\234\000\000\000\000\000\007H\005\190\000\000\230.\000\000\129@\233\\\218H\000\000\007\228\005\190\000\000\133\n\021\000\129@\230z\000\000\023\230\020\196\021\192\220Ly\172\027\184\020J\005\208\000\000\011JxZ\0028\000\000\022\006\021\206x\178\021\000{H\137\024\016\170\000\000\135\204\020\196\003\208\016\180\000\000\bJ\000\000\022(\021\184\137\024\145P\000\000\000>\001\208\t\234\000\000\bp\000\000\022:\021\212\131\186|\154\000\000\020\196x\178\022p\021^\002\248\000\000\015:x\178\137\024\015\254\003\014\000\000\137\024\005t\tt\000\000\000\000\210b\000\000\000\000\016fx\178\210\230\145P\000\000\021\000\137\024\015\228\137\024\130z|\154\000\000\014\198\000\000\000\000|\154\000\000\000\000\135\204\000\000\230.\178`\020J\005\208\011J\022Z\022\012x\178\230.\178`\000\000\000\000\020J\005\208\011J\022b\021\234\181\164\204\140\229l\022~\181\164\204\018\025t\022\128\181\164\229l\022\140\181\164\211\164\212&\000\000\231\026\000\000\000\000\218H\234V\020J\005\208\011J\022\140\022\020\181\164\218H\234V\000\000\000\000\000\000\236V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\218H\000\000\179^\021\000~:\022\152\224\148\000\000\230.\179^\000\000\000\000\234\132\021\000~:\022\162\0222\232\022\221\252\000\252\022\244\000\000\000\000\212\134\220L\021\000\000\000\228d\021\192\000\000\000\000\230.\234\132\000\000\000\000\000\000\227\130~\172\174\194\000\252\022\246\000\000\000\000\000\000\220L\021\000\000\000\000\252\022\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011&y\172\020J\005\208\011J\022\204\221\012\138\180\021\000\143\146\140\198\021(\007\180\000\252\022\208\007\240\000\000\000\000\022\128\000\000\000\000\145P\000\000\006\208\017^\000\000\016J\000\000\022\240\022z\137\024\144\148\022\252\b\234\000\000\000\000\022\170\000\000\000\000\021D\000>\017>\000\000\023\014\221\154\216,\003\170\022\198\137\024\016\228\000\000\000\000\022\222\000\000\000\000\000\000\145P\000\000\004\252\017\160\000\000\017J\000\000\0234\022\188\131\186\000\000\0238\222(\216\186\003\170\022\222\137\024\017\228\000\000\000\000\022\254\000\000\000\000\000\000\021\000\000\000\145P\000\000\021\"\020\196\138\180\138\180\2136\129v\021\000\227<\223f\t\172\000\000\021j\002\248\000\000\017f\138\180\137\024\017\254\007\230\000\000\021\000\221\012\221\012\138\180\t~\138\180\000\000{\198|\180\000\000\195\128\000\000\000\000\196 \000\000\000\000\196\192\000\000\017\132\138\180\197`\227<\223f\t\172\000\000\005\136\000\000\000\000\181\164\016\204\000\000\000\000\142\254\023X\000\000\145P\000\000\138\180\142\254\145P\000\000\021\000\137\024\145P\000\000\016v\000\000\000\000\145P\000\000\000\000\140\198\000\000\231L\181\164\023\n\138\180\231z\221\012\000\000\218H\194\n\020J\005\208\011J\023\142\221\012\218H\194\n\000\000\000\000\000\000\234\238\191$\000\000\000\000\000\000\000\000\000\000\000\000\175\138\218H\000\000\179^\000\000\000\000\000\000\000\000\218H\234\238\000\000\000\000\000\000\175\138\023\212\000\000\023\214\000\000\218H\234\238\000\000\000\000\017J\000\000\000\000\205\014 \226\000\000\000\000\129\218\000\000\000\000\236\250\023,\222\182\017F\023\176\023@\137\024\018\132\000\000\000\000\129\218\000\000\000\000\237.|l\000\000\137\024\018\134\000\000\140\198\017\136\000\000\000\000\017\000\030\238\201b\021\000\198vs\238t\238\023J\174\176\018\016\023\208\000*\024\018\000\000\000\000\017\000\031\238\201b\021\000\198vu\238v\238\024>\213z\000\000w\238\024\"\000\000\000\000\024\026\027\166\028\166\021\192\220L\025T\021\000\000\000\218H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\2246\025T\021\000\000\000\017j\224\148\000\000\230.\000\000\0246\027\166\028\166\218H\000\000\024H\000\000\006\206\r\246\021\000\222\138\000\000\000\000!\184\232v\000\000\000\000\023\204\000\000\024\"\137\024\000\000\020\158\237\248\184\"\137\024\000\000\017\204\t\014\003\014\000\000\000\000\137\024\b\228\t\228\137\024\012\228\000\252\024`\000\000\000\000\228\196\000\000\000\000\232\022\000\000\230.\000\000\024X\027\166\028\230\230.\000\000\000\000\000\000\000\000\018\164\229\\\232\022\000\000\230.\000\000\024b\027\166\028\230\230.\000\000\018\136\000\000\000\000#$\000\000\218H\000\000\024t\000\000\000\000\023\206\000\000\0188\000\000\000\000\023\236\000\000\000\000\192\018\023\244\000\000\000\000\031\230\187\130\024\146\000\000\000\000\000\000\018f\b\160\190\138\024\152\000\000\000\000\000\000\000\000\000\000\000\000\024$\000\000\025T\000\000\0242\000\000\137\024\000\000\018R\000\000\000\000\0244\000\000\000\000\003\014\000\000\r\254\000\000\000\000\000\000\016\254\000\000\023\238\000\000\nF\000\000\129@\000\000\026d\000\000\n\160\000\000\0246\000\000\180\134\026\"\000\000\000\000\t\158\024:\000\000\000\000\024<\011\158}\168\005\014\229\220\000\000\000\000\000\000\000\000\000\000\219$\000\000\000\000\024\236\000\000\213\192\000\000\018\208\024\244\000\000\025\000\000\000~\154~\154\184\016\184\016\000\000\000\000\205\202\184\016\000\000\000\000\000\000\205\202\184\016\024~\000\000\024\128\000\000"), (16, "\003\197\003\197\000\006\005Z\005^\003\197\002\198\002\202\003\197\002\246\002\150\003\197\003\002\003\197\006j\004\218\003\197\t\198\003\197\003\197\003\197\022\166\003\197\003\197\003\197\001\214\001\006\001\194\011\026\004\222\003\197\005\142\005\146\r\242\003\197\005\197\003\197\006n\004\226\t\250\005\186\022\170\003\197\003\197\005\230\005\234\003\197\005\238\005\242\003\197\005\246\006\002\006\014\006\022\t\166\003\182\003\197\003\197\002\190\005\197\020\242\006\n\003\197\003\197\003\197\011\018\011\022\011\"\0116\011\170\006\146\003\197\003\197\003\197\003\197\003\197\003\197\003\197\003\197\003\197\011\194\nz\003\197\005\197\003\197\003\197\005\197\011\206\011\230\012\158\006\158\006\162\003\197\003\197\003\197\000\242\003\197\003\197\003\197\000\242\003\197\bb\000\242\019J\003\197\001j\003\197\003\197\004-\003\197\003\197\003\197\003\197\003\197\003\197\006\166\011*\003\197\003\197\003\197\011B\003j\012\178\bf\003\197\003\197\003\197\003\197\015\129\015\129\002\001\003\014\021J\015\129\004\162\015\129\015\129\004Y\015\129\015\129\015\129\015\129\001.\015\129\015\129\015E\015\129\015\129\015\129\004M\015\129\015\129\015\129\015\129\005\197\015\129\000\n\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015E\015\129\021\146\015\129\0042\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015\129\007m\015\129\015\129\000\242\015\129\006\018\015\129\015\129\015\129\002\001\015M\015\129\015\129\015\129\015\129\015\129\015\129\015\129\000\242\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015M\015\129\015\129\004Y\015\129\015\129\002V\001j\004-\005\197\015\129\015\129\015\129\015\129\015\129\001n\015\129\015\129\015\129\002Z\015\129\015\129\015I\015\129\015\129\001v\015\129\015\129\025\226\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015\129\015I\005\197\015\129\015\129\015\129\015\129\001\153\001\153\001\153\002:\025\234\001\153\004U\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\134\001\153\t\225\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\005f\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\025\134\001\153\001\153\001\153\001\153\t\254\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\004U\001\153\001\153\001\153\001\153\001\153\001\150\001\153\002F\n:\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\t\130\001\153\001\153\001\153\011Z\001\153\006\214\001\153\001\153\024R\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\001\153\020\166\001\153\001\153\001\153\001\153\001\153\012\233\012\233\005\197\005\197\005j\012\233\001\186\012\233\012\233\002~\012\233\012\233\012\233\012\233\001\210\012\233\012\233\005\197\012\233\012\233\012\233\003>\012\233\012\233\012\233\012\233\001\190\012\233\001\210\012\233\012\233\012\233\012\233\012\233\012\233\012\233\012\233\001j\012\233\001f\012\233\004-\012\233\012\233\012\233\012\233\012\233\012\233\012\233\012\233\b\141\012\233\012\233\001~\012\233\001\142\012\233\012\233\012\233\002\174\000\242\012\233\012\233\012\233\012\233\012\233\012\233\012\233\000\n\012\233\012\233\012\233\012\233\012\233\012\233\012\233\012\233\012\233\012\233\012\233\b*\012\233\012\233\011\129\012\233\012\233\002\001\002\001\024\210\003\210\012\233\012\233\012\233\012\233\012\233\001\210\012\233\012\233\012\233\002\001\012\233\011\186\020\234\012\150\012\233\007\141\012\233\012\233\025\182\012\233\012\233\012\233\012\233\012\233\012\233\012\233\012\233\012\233\012\233\012\233\012\233\012\233\002b\012\233\012\233\012\233\012\233\012\233\004u\004u\001\202\001\006\001\194\004u\022\142\004u\004u\007\166\004u\004u\004u\004u\002f\004u\004u\025\190\004u\004u\004u\b\181\004u\004u\004u\004u\021\138\004u\007u\004u\004u\004u\004u\004u\004u\004u\004u\n\214\004u\011\129\004u\011\246\004u\004u\004u\004u\004u\004u\004u\004u\000\242\004u\004u\003\241\004u\001\238\004u\004u\004u\004\134\007\141\004u\004u\004u\004u\004u\004u\004u\003\241\004u\004u\004u\004u\004u\004u\004u\004u\004u\004u\004u\016\222\011\178\012\142\001\242\004u\004u\011\250\012\022\002\026\b\189\004u\004u\004u\004u\004u\t\162\004u\004u\004u\022\146\004u\011\186\021\234\012\150\004u\003\014\004u\004u\004\162\004u\004u\004u\004u\004u\004u\004u\004u\004u\004u\004u\004u\004u\004\138\004u\004u\004u\004u\004u\004e\004e\029^\001\006\001\194\004e\003F\004e\004e\t\230\004e\004e\004e\004e\001\222\004e\004e\t\194\004e\004e\004e\0052\004e\004e\004e\004e\029f\004e\004&\004e\004e\004e\004e\004e\004e\004e\004e\003:\004e\011\190\004e\0056\004e\004e\004e\004e\004e\004e\004e\004e\t\217\004e\004e\019\174\004e\019\186\004e\004e\004e\001\226\002z\004e\004e\004e\004e\004e\004e\004e\030z\004e\004e\004e\004e\004e\004e\004e\004e\004e\004e\004e\0115\011\178\012\142\017:\004e\004e\005\197\005\197\030~\003J\004e\004e\004e\004e\004e\025\026\004e\004e\004e\000\242\004e\011\186\002\202\012\150\004e\017>\004e\004e\025v\004e\004e\004e\004e\004e\004e\004e\004e\004e\004e\004e\004e\004e\000\242\004e\004e\004e\004e\004e\012I\012I\005Z\005^\000\242\012I\005\129\012I\012I\0166\012I\012I\012I\012I\001\210\012I\012I\023\142\012I\012I\012I\002~\012I\012I\012I\012I\005\197\012I\015\165\012I\012I\012I\012I\012I\012I\012I\012I\n\214\012I\0115\012I\015\165\012I\012I\012I\012I\012I\012I\012I\012I\000\242\012I\012I\030\130\012I\017\026\012I\012I\012I\002\138\001\210\012I\012I\012I\012I\012I\012I\012I\000\242\012I\012I\012I\012I\012I\012I\012I\012I\012I\012I\012I\005\129\012I\012I\005\197\012I\012I\016>\005Z\024\202\005\197\012I\012I\012I\012I\012I\003\n\012I\012I\012I\011~\012I\012I\024\222\012I\012I\002\226\012I\012I\028\210\012I\012I\012I\012I\012I\012I\012I\012I\012I\012I\012I\012I\012I\005\197\005\197\012I\012I\012I\012I\012Y\012Y\004B\003\006 J\012Y\018\178\012Y\012Y\004\146\012Y\012Y\012Y\012Y\003N\012Y\012Y\028\218\012Y\012Y\012Y\005>\012Y\012Y\012Y\012Y\011e\012Y\007m\012Y\012Y\012Y\012Y\012Y\012Y\012Y\012Y\t\194\012Y\000\242\012Y\005B\012Y\012Y\012Y\012Y\012Y\012Y\012Y\012Y\011\133\012Y\012Y\003:\012Y\017B\012Y\012Y\012Y\003Z\005\197\012Y\012Y\012Y\012Y\012Y\012Y\012Y\000\242\012Y\012Y\012Y\012Y\012Y\012Y\012Y\012Y\012Y\012Y\012Y\0216\012Y\012Y\003\134\012Y\012Y\004\002\t\194\005\n\011e\012Y\012Y\012Y\012Y\012Y\018\182\012Y\012Y\012Y\021>\012Y\012Y\011\026\012Y\012Y\003V\012Y\012Y\003j\012Y\012Y\012Y\012Y\012Y\012Y\012Y\012Y\012Y\012Y\012Y\012Y\012Y\002\202\011e\012Y\012Y\012Y\012Y\012Q\012Q\025\022\005\197\000\242\012Q\011\133\012Q\012Q\005&\012Q\012Q\012Q\012Q\005\197\012Q\012Q\004n\012Q\012Q\012Q\025&\012Q\012Q\012Q\012Q\000\242\012Q\b\158\012Q\012Q\012Q\012Q\012Q\012Q\012Q\012Q\t\194\012Q\005\198\012Q\025\194\012Q\012Q\012Q\012Q\012Q\012Q\012Q\012Q\005\210\012Q\012Q\000\242\012Q\017j\012Q\012Q\012Q\004\"\025\238\012Q\012Q\012Q\012Q\012Q\012Q\012Q\007\249\012Q\012Q\012Q\012Q\012Q\012Q\012Q\012Q\012Q\012Q\012Q\025:\012Q\012Q\n.\012Q\012Q\028\178\nZ\007\249\007y\012Q\012Q\012Q\012Q\012Q\005\214\012Q\012Q\012Q\025&\012Q\012Q\003\014\012Q\012Q\004\162\012Q\012Q\t\229\012Q\012Q\012Q\012Q\012Q\012Q\012Q\012Q\012Q\012Q\012Q\012Q\012Q\t\238\001z\012Q\012Q\012Q\012Q\012=\012=\t\194\"\138\001\226\012=\011Y\012=\012=\n\n\012=\012=\012=\012=\001\210\012=\012=\b\162\012=\012=\012=\017\018\012=\012=\012=\012=\n\018\012=\004&\012=\012=\012=\012=\012=\012=\012=\012=\017b\012=\004\186\012=\017\022\012=\012=\012=\012=\012=\012=\012=\012=\000\242\012=\012=\003:\012=\017\150\012=\012=\012=\002\174\017f\012=\012=\012=\012=\012=\012=\012=\b\001\012=\012=\012=\012=\012=\012=\012=\012=\012=\012=\012=\0111\012=\012=\028\250\012=\012=\002\202\n>\b\001!z\012=\012=\012=\012=\012=\011Y\012=\012=\012=\003\014\012=\012=\004\162\012=\012=\003\146\012=\012=\r\138\012=\012=\012=\012=\012=\012=\012=\012=\012=\012=\012=\012=\012=\000\242\001\138\012=\012=\012=\012=\012E\012E\001\006\001\194\018\202\012E\003\182\012E\012E\006.\012E\012E\012E\012E\030&\012E\012E\025\230\012E\012E\012E\002\238\012E\012E\012E\012E\016\002\012E\003:\012E\012E\012E\012E\012E\012E\012E\012E\005\221\012E\0111\012E\t\233\012E\012E\012E\012E\012E\012E\012E\012E\000\242\012E\012E\000\242\012E\017\190\012E\012E\012E\004f\016\002\012E\012E\012E\012E\012E\012E\012E\b\t\012E\012E\012E\012E\012E\012E\012E\012E\012E\012E\012E\nV\012E\012E\005\221\012E\012E\n\214\002\018\b\t\004\190\012E\012E\012E\012E\012E!\146\012E\012E\012E\000\242\012E\012E\017\142\012E\012E\006J\012E\012E\018\206\012E\012E\012E\012E\012E\012E\012E\012E\012E\012E\012E\012E\012E\017\146\001\154\012E\012E\012E\012E\012A\012A\004v#\015\001\226\012A\007\006\012A\012A\007v\012A\012A\012A\012A\004\202\012A\012A\b\137\012A\012A\012A\000\242\012A\012A\012A\012A\004\210\012A\011a\012A\012A\012A\012A\012A\012A\012A\012A\004~\012A\007\238\012A\t\181\012A\012A\012A\012A\012A\012A\012A\012A\000\242\012A\012A\000\242\012A\017\230\012A\012A\012A\004\198\004\214\012A\012A\012A\012A\012A\012A\012A\b\018\012A\012A\012A\012A\012A\012A\012A\012A\012A\012A\012A\011\166\012A\012A\000\242\012A\012A\005\210\012J\b\022\002!\012A\012A\012A\012A\012A\n\214\012A\012A\012A\004&\012A\012A\025~\012A\012A\b\238\012A\012A\000\242\012A\012A\012A\012A\012A\012A\012A\012A\012A\012A\012A\012A\012A\017\222\011\014\012A\012A\012A\012A\012M\012M\001\006\001\194\000\242\012M\004&\012M\012M\t\"\012M\012M\012M\012M\018^\012M\012M\017\226\012M\012M\012M\000\242\012M\012M\012M\012M\018\002\012M\005\206\012M\012M\012M\012M\012M\012M\012M\012M\018b\012M\tZ\012M\004\254\012M\012M\012M\012M\012M\012M\012M\012M\000\242\012M\012M\000\242\012M\018\022\012M\012M\012M\004\250\031\214\012M\012M\012M\012M\012M\012M\012M\005\002\012M\012M\012M\012M\012M\012M\012M\012M\012M\012M\012M\016*\012M\012M\000\242\012M\012M\005\022\005*\006\030\t\006\012M\012M\012M\012M\012M\n\214\012M\012M\012M\020\190\012M\012M\000\242\012M\012M\nF\012M\012M\000\242\012M\012M\012M\012M\012M\012M\012M\012M\012M\012M\012M\012M\012M\nr\021\030\012M\012M\012M\012M\012]\012]\006:\006N\016F\012]\011]\012]\012]\n\202\012]\012]\012]\012]\017\222\012]\012]\t\194\012]\012]\012]\018\014\012]\012]\012]\012]\018\246\012]\005\206\012]\012]\012]\012]\012]\012]\012]\012]\018\238\012]\016\182\012]\018\018\012]\012]\012]\012]\012]\012]\012]\012]\000\242\012]\012]\020f\012]\018>\012]\012]\012]\006\246\007\n\012]\012]\012]\012]\012]\012]\012]\020\194\012]\012]\012]\012]\012]\012]\012]\012]\012]\012]\012]\016\134\012]\012]\000\242\012]\012]\007f\007z\007\222\007\242\012]\012]\012]\012]\012]\011]\012]\012]\012]\005\014\012]\012]\005\026\012]\012]\005\030\012]\012]\005r\012]\012]\012]\012]\012]\012]\012]\012]\012]\012]\012]\012]\012]\b\222\b\242\012]\012]\012]\012]\012U\012U\t\018\t&\017\182\012U\0186\012U\012U\020j\012U\012U\012U\012U!*\012U\012U\017\142\012U\012U\012U\018\014\012U\012U\012U\012U\017\186\012U\018:\012U\012U\012U\012U\012U\012U\012U\012U\018\214\012U\005v\012U\019\002\012U\012U\012U\012U\012U\012U\012U\012U\003:\012U\012U\020\250\012U\018f\012U\012U\012U\tJ\t^\012U\012U\012U\012U\012U\012U\012U\0166\012U\012U\012U\012U\012U\012U\012U\012U\012U\012U\012U\006Y\012U\012U\017\182\012U\012U\tz\t\146\t\154\022N\012U\012U\012U\012U\012U\"\239\012U\012U\012U\026\138\012U\012U\003J\012U\012U\018\226\012U\012U\005\170\012U\012U\012U\012U\012U\012U\012U\012U\012U\012U\012U\012U\012U\012r\012\130\012U\012U\012U\012U\012\213\012\213\012\242\r\002\0186\012\213\017:\012\213\012\213\020\254\012\213\012\213\012\213\012\213\018^\012\213\012\213\021\166\012\213\012\213\012\213\017\018\012\213\012\213\012\213\012\213\019\014\012\213\019\182\012\213\012\213\012\213\012\213\012\213\012\213\012\213\012\213\019\026\012\213\020B\012\213\019\170\012\213\012\213\012\213\012\213\012\213\012\213\012\213\012\213\020\018\012\213\012\213\002\162\012\213\018\130\012\213\012\213\012\213\rJ\rZ\012\213\012\213\012\213\012\213\012\213\012\213\012\213\026\142\012\213\012\213\012\213\012\213\012\213\012\213\012\213\012\213\012\213\012\213\012\213\020V\012\213\012\213\021\006\012\213\012\213\015\186\015\202\016\166\016\186\012\213\012\213\012\213\012\213\012\213\020\026\012\213\012\213\012\213\017b\012\213\012\213\020Z\012\213\012\213\021\n\012\213\012\213\026\"\012\213\012\213\012\213\012\213\012\213\012\213\012\213\012\213\012\213\012\213\012\213\012\213\012\213\019\194\002\162\012\213\012\213\012\213\012\213\004a\004a\019\206\019\222\n\142\004a\020.\004a\004a\0166\004a\004a\004a\004a\020\154\004a\004a\021z\004a\004a\004a\026.\004a\004a\004a\004a\0202\004a\020F\004a\004a\004a\004a\004a\004a\004a\004a\020\158\004a\r\"\004a\028\222\004a\004a\004a\004a\004a\004a\004a\004a\000\242\004a\004a\0172\004a\017Z\004a\004a\004a\030\202\020\202\004a\004a\004a\004a\004a\004a\004a\0166\004a\004a\004a\004a\004a\004a\004a\004a\004a\004a\004a\026v\011\178\012\142\020\206\004a\004a\021\242\007\190\005\210\007q\004a\004a\004a\004a\004a\021\182\004a\004a\004a\004A\004a\011\186\030\138\012\150\004a\025\166\004a\004a\0266\004a\004a\004a\004a\004a\004a\004a\004a\004a\004a\004a\004a\004a\030\142\004a\004a\004a\004a\004a\0021\0021\026Z\025\186\024V\0021\022r\002\202\0021\006\"\002\150\0021\012\238\0021\007}\004\218\0021\024\018\0021\0021\0021\000\242\0021\0021\0021\001\214\n\142\r\006\030\206\004\222\0021\0021\0021\0021\0021\r\014\0021\031\174\004\226\018\006\005\186\029j\0021\0021\0021\0021\0021\005\238\005\242\0021\000\242\006\002\001\194\018.\0021\018V\0021\0021\002\190\029\026\001\210\006\n\0021\0021\0021\011\018\011\022\011\" &\r\022\006\146\0021\0021\0021\0021\0021\0021\0021\0021\0021\029:\011\178\012\142\t\217\0021\0021\031\226\031\246\028\214\t\221\006\158\006\162\0021\0021\0021\"\255\0021\0021\0021\015\173\0021\r\030\n\142\017\130\0021 \246\0021\0021\029b\0021\0021\0021\0021\0021\0021\006\166\011*\0021\0021\0021\011B\003j!v\022v\0021\0021\0021\0021\012\189\012\189\029\254\006&\015\185\012\189\031\178\002\202\012\189\0062\002\150\012\189\012\189\012\189\006>\004\218\012\189\030^\012\189\012\189\012\189\030\n\012\189\012\189\012\189\001\214\n\142\012\189\"F\004\222\012\189\012\189\012\189\012\189\012\189\012\189\012\189 *\004\226\018\250\005\186\n\142\012\189\012\189\012\189\012\189\012\189\005\238\005\242\012\189\000\242\006\002\001\194\019\006\012\189\019\018\012\189\012\189\002\190 V f\006\n\012\189\012\189\012\189\011\018\011\022\011\"\"\022\012\189\006\146\012\189\012\189\012\189\012\189\012\189\012\189\012\189\012\189\012\189\029\154\012\189\012\189!\134\012\189\012\189\031\242 \026\006B\001\210\006\158\006\162\012\189\012\189\012\189\006\238\012\189\012\189\012\189\006\250\012\189\012\189\003:\012\189\012\189\000\242\012\189\012\189\0266\012\189\012\189\012\189\012\189\012\189\012\189\006\166\011*\012\189\012\189\012\189\011B\003j\005\221\006\254\012\189\012\189\012\189\012\189\012\185\012\185\000\242\000\242\"J\012\185!\234\002\202\012\185\"\207\002\150\012\185\012\185\012\185\007:\004\218\012\185\007j\012\185\012\185\012\185\007n\012\185\012\185\012\185\001\214\"\134\012\185\007\178\004\222\012\185\012\185\012\185\012\185\012\185\012\185\012\185\"\026\004\226\002\238\005\186\007\194\012\185\012\185\012\185\012\185\012\185\005\238\005\242\012\185\007\226\006\002\001\194\007\230\012\185\bF\012\185\012\185\002\190\b\226\b\230\006\n\012\185\012\185\012\185\011\018\011\022\011\"\t\n\012\185\006\146\012\185\012\185\012\185\012\185\012\185\012\185\012\185\012\185\012\185\t\022\012\185\012\185\t\026\012\185\012\185\tB\tN\tR\t~\006\158\006\162\012\185\012\185\012\185\t\142\012\185\012\185\012\185\t\206\012\185\012\185\012\018\012\185\012\185\012*\012\185\012\185\012V\012\185\012\185\012\185\012\185\012\185\012\185\006\166\011*\012\185\012\185\012\185\011B\003j\012v\012~\012\185\012\185\012\185\012\185\002\133\002\133\012\146\012\246\012\254\002\133\r\n\002\202\002\133\rN\002\150\002\133\012\238\002\133\rV\004\218\002\133\015\190\002\133\002\133\002\133\015\198\002\133\002\133\002\133\001\214\016\"\r\006\016R\004\222\002\133\002\133\002\133\002\133\002\133\r\014\002\133\016j\004\226\016\170\005\186\005\197\002\133\002\133\002\133\002\133\002\133\005\238\005\242\002\133\016\174\006\002\001\194\018\194\002\133\019>\002\133\002\133\002\190\019^\019\210\006\n\002\133\002\133\002\133\011\018\011\022\011\"\019\218\r\022\006\146\002\133\002\133\002\133\002\133\002\133\002\133\002\133\002\133\002\133\006-\021V\002\133\021~\002\133\002\133\001\210\005\197\006Z\005\197\006\158\006\162\002\133\002\133\002\133!b\002\133\002\133\002\133\b\130\002\133\000\242\005\197\006-\002\133\005\197\002\133\002\133\005\197\002\133\002\133\002\133\002\133\002\133\002\133\006\166\011*\002\133\002\133\002\133\011B\003j\015\001\005\197\002\133\002\133\002\133\002\133\005\197\t\250\005\197\002\174\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\021\154\005\197\005\197\000\242\005\197\005\197\005\197\023\002\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\021\158\005\197\005\197\003\210\000\242\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\nz\005\197\005\197\005\197\005\197\005\197\000\242\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\000\242\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\021\198\021\218\005\197\021\250\022\n\005\197\005\197\005\197\000\242\005\197\022\030\000\242\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\005\197\001.\n\134\005\197\005\197\000\242\005\197\002\001\002\001\005\197\021r\n\142\005\197\002\150\005\197\022J\022\178\023\006\000\242\n\146\022\186\005\197\005\197\005\197\000\242\022\198\005\197\005\197\005\197\005\197\022\222\000\129\005\197\000\129\000\n\000\129\000\129\000\129\000\129\000\129\000\129\000\129\024\n\000\129\029\198\000\129\000\129\028\162\000\129\000\129\022\226\024\030\000\129\000\129\021v\000\129\000\129\000\129\000\129\024\"\000\129\029\018\000\129\000\129\bB\002\001\000\129\000\129\021\130\000\129\000\129\000\129\b\153\000\129\026\022\000\129\000\129\000\129\000\129\000\129\029\242\000\129\000\129\000\129\000\129\000\129\024\230\024\254\000\129\000\129\025\142\b\153\000\129\000\129\006\162\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\025\146\b-\000\129\025\202\0061\000\129\b\145\000\129\025\206\000\129\b\134\002\202\025\246\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\b-\025\250\026\018\000\129\b\145\000\129\0061\026\190\b\145\000\226\026\194\026\230\026\234\000\129\012j\022\230\026\250\027\n\022\246\000\129\000\129\000\129\000\129\027\022\rv\000\129\000\129\000\129\000\129\ne\ne\b\153\027J\027N\ne\005\198\002\202\ne\027\158\002\150\ne\011\030\ne\027\198\004\218\ne\027\202\ne\ne\ne\0052\ne\ne\ne\001\214\027\218\028*\028J\004\222\ne\ne\ne\ne\ne\028\138\ne\028\174\004\226\028\190\005\186\0056\ne\ne\ne\ne\ne\005\238\005\242\ne\b\145\006\002\011&\028\230\ne\028\234\ne\ne\002\190\028\246\029\006\006\n\ne\ne\ne\011\018\011\022\011\"\029\"\006v\006\146\ne\ne\ne\ne\ne\ne\ne\ne\ne\t\250\011\178\012\142\0292\ne\ne\029F\029r\029v\029\130\006\158\006\162\ne\ne\ne\029\146\ne\ne\ne\n\194\ne\011\186\029\166\012\150\ne\030\154\ne\ne\030\242\ne\ne\ne\ne\ne\ne\006\166\011*\ne\ne\ne\011B\003j\nz\002\202\ne\ne\ne\ne\002}\002}\002\001\002\001\031\026\002}\002\001\002\202\002}\031\142\031\150\002}\031\218\002}\005~\000\242\002}\005\166\002}\002}\002}\031\230\002}\002}\002}\001\214\031\234 N\000\n\000\n\002}\002}\002}\002}\002}\020v\002} Z b\012\154\005\198 \138\002}\002}\002}\002}\002}\002\001 \154\002}\b9\005\174 \166\018\218\002}\018\230\002}\002}\002\190\002\001\002\001\002\001\002}\002}\002}\002\001!\n!\030!N!V\b9\002}\002}\002}\002}\002}\002}\002}\002}\002}!\162\011\178\012\142!\202\002}\002}\t\186\002\001\"\002\"2\">\000\n\002}\002}\002}\"S\002}\002}\002}\"c\002}\011\186\"v\012\150\002}\"\146\002}\002}\tm\002}\002}\002}\002}\002}\002}\011\178\012\142\002}\002}\002}\005>\005\210\002\001\"\175\002}\002}\002}\002}\n=\n=\"\191\"\219#/\n=#K\011\186\n=\012\150\tm\n=\005B\n=#V\019\198\n=#\139\n=\n=\n=#\159\n=\n=\n=\tm\007\029#\167\tm\011\158\n=\n=\n=\n=\n=\tm\n=\011^\001\194\tm#\227#\235\n=\n=\n=\n=\n=\0206\000\000\n=\024~\020J\020^\020n\n=\000\000\n=\n=\002\202\011\226\000\000\002\150\n=\n=\n=\000\000\000\000\000\000\by\007\029\n\226\n=\n=\n=\n=\n=\n=\n=\n=\n=\000\000\011\178\012\142\000\000\n=\n=\024\206\b\138\007\029\0111\n\230\by\n=\n=\n=\000\000\n=\n=\n=\019F\n=\011\186\024J\012\150\n=\000\000\n=\n=\rA\n=\n=\n=\n=\n=\n=\000\000\021\130\n=\n=\n=\000\242\n\214\000\000\000\000\n=\n=\n=\n=\002\145\002\145\000\000\000\242\000\000\002\145\000\242\000\000\002\145\000\000\rA\002\145\000\000\002\145\006\162\000\000\002\145\000\000\002\145\002\145\002\145\000\000\002\145\002\145\002\145\rA\000\000\000\000\rA\016~\002\145\002\145\002\145\002\145\002\145\rA\002\145\007\210\000\000\rA\007\142\000\000\002\145\002\145\002\145\002\145\002\145\b\026\0111\002\145\000\000\b&\000\000\000\000\002\145\n\234\002\145\002\145\011e\000\000\t\250\000\000\002\145\002\145\002\145\000\000\000\000\000\000\011\153\000\000\000\000\002\145\002\145\002\145\002\145\002\145\002\145\002\145\002\145\002\145\000\000\011\178\012\142\000\000\002\145\002\145\000\000\020\138\000\000\000\000\000\242\011\153\002\145\002\145\002\145\000\000\002\145\002\145\002\145\000\000\002\145\011\186\nz\012\150\002\145\000\000\002\145\002\145\006\129\002\145\002\145\002\145\002\145\002\145\002\145\000\000\000\000\002\145\002\145\002\145\006\129\005\210#;\000\242\002\145\002\145\002\145\002\145\002\141\002\141\000\000\000\000\000\000\002\141\000\000\007\210\002\141\000\000\007\142\002\141\000\000\002\141\000\000\000\000\002\141\b\026\002\141\002\141\002\141\b&\002\141\002\141\002\141\006\129\000\000#\031\000\000\023\214\002\141\002\141\002\141\002\141\002\141\000\000\002\141\011^\020\170\000\000\000\000\000\000\002\141\002\141\002\141\002\141\002\141\0206\t\185\002\141\000\000\020J\020^\020n\002\141\006\129\002\141\002\141\006\129\000\000\000\000\000\000\002\141\002\141\002\141\000\000\000\000\000\000\000\000\000\000\000\000\002\141\002\141\002\141\002\141\002\141\002\141\002\141\002\141\002\141\000\000\011\178\012\142\000\000\002\141\002\141\002\186\000\000\000\000\000\000\000\242\000\000\002\141\002\141\002\141\000\000\002\141\002\141\002\141\t\217\002\141\011\186\t\217\012\150\002\141\002\001\002\141\002\141\000\000\002\141\002\141\002\141\002\141\002\141\002\141\000\000\000\000\002\141\002\141\002\141\029\026\000\000\000\000\003N\002\141\002\141\002\141\002\141\nQ\nQ\000\000\000\000\000\000\nQ\000\n\007\210\nQ\000\000\007\142\nQ\000\000\nQ\000\000\t\217\nQ\b\026\nQ\nQ\nQ\b&\nQ\nQ\nQ\002\001\000\000\000\000\011\157\t\217\nQ\nQ\nQ\nQ\nQ\002\202\nQ\002\001\002\001\003\150\003Z\000\000\nQ\nQ\nQ\nQ\nQ\003\022\003\"\nQ\000\000\011\157\000\000\003.\nQ\t\217\nQ\nQ\000\000\000\000\000\000\000\000\nQ\nQ\nQ\000\000\000\000\000\000\000\000\000\000\000\000\nQ\nQ\nQ\nQ\nQ\nQ\nQ\nQ\nQ\005\198\011\178\012\142\t\217\nQ\nQ\000\000\000\000\000\000\000\000\000\242\000\000\nQ\nQ\nQ\000\000\nQ\nQ\nQ\021r\nQ\011\186\002\150\012\150\nQ\000\000\nQ\nQ\000\000\nQ\nQ\nQ\nQ\nQ\nQ\000\000\000\000\nQ\nQ\nQ\005-\002\202\000\000\004\218\nQ\nQ\nQ\nQ\ny\ny\000\000\021r\000\000\ny\002\150\005-\ny\000\000\b\186\ny\005.\ny\000\000\021v\ny\005-\ny\ny\ny\005-\ny\ny\ny\005:\000\000\000\000\000\000\021\130\ny\ny\ny\ny\ny\000\000\ny\017\134\005\198\000\000\000\000\000\000\ny\ny\ny\ny\ny\021v\000\000\ny\006\146\017\174\000\000\017\214\ny\006\162\ny\ny\000\000\000\000\000\000\021\130\ny\ny\ny\000\000\000\000\000\000\000\000\000\000\006\158\ny\ny\ny\ny\ny\ny\ny\ny\ny\000\000\011\178\012\142 \174\ny\ny\000\000\006\162\000\000\000\000\t\129\000\000\ny\ny\ny\006\166\ny\ny\ny\000\000\ny\011\186\000\000\012\150\ny\000\000\ny\ny\000\000\ny\ny\ny\ny\ny\ny\027\246\000\000\ny\ny\ny\t\129\000\000\n\182\t\250\ny\ny\ny\ny\002\129\002\129\000\000\000\000\000\000\002\129\000\000\t\129\002\129\000\000\007\142\002\129\000\000\002\129\n\186\000\000\002\129\t\129\002\129\002\129\002\129\t\129\002\129\002\129\002\129\002\001\002\001\023f\000\000\000\000\002\129\002\129\002\129\002\129\002\129\000\000\002\129\nz\000\000\000\000\002\001\000\000\002\129\002\129\002\129\002\129\002\129\b\161\000\000\002\129\000\000\000\000\000\n\000\000\002\129\000\000\002\129\002\129\000\242\000\000\000\000\000\000\002\129\002\129\002\129\000\000\b\161\000\000\000\000\000\000\b\161\002\129\002\129\002\129\002\129\002\129\002\129\002\129\002\129\002\129\t\250\011\178\012\142\002\001\002\129\002\129\000\000\000\000\000\000\000\000\n\197\000\000\002\129\002\129\002\129\000\000\002\129\002\129\002\129\023:\002\129\011\186\000\000\012\150\002\129\000\000\002\129\002\129\000\000\002\129\002\129\002\129\002\129\002\129\002\129\t\250\000\000\002\129\002\129\002\129\n\197\005\210\nz\000\000\002\129\002\129\002\129\002\129\n\161\n\161\000\000\b\161\000\000\n\161\011\138\b\214\n\161\000\000\n\197\n\161\000\000\n\161\000\000\000\242\n\161\n\197\n\161\n\161\n\161\n\197\n\161\n\161\n\161\002\001\002\001\024\166\012j\nz\n\161\n\161\n\161\n\161\n\161\000\000\n\161\006\218\rv\000\000\002\001\000\000\n\161\n\161\n\161\n\161\n\161\006R\000\000\n\161\000\242\bV\000\n\006^\n\161\000\000\n\161\n\161\000\000\000\000\000\000\023>\n\161\n\161\n\161\000\000\000\000\000\000\000\000\000\000\000\000\n\161\n\161\n\161\n\161\n\161\n\161\n\161\n\161\n\161\000\000\011\178\012\142\002\001\n\161\n\161\000\000\000\000\000\000\000\000\000\242\000\000\n\161\n\161\n\161\000\000\n\161\n\161\n\161\000\000\n\161\011\186\000\000\012\150\n\161\000\000\n\161\n\161\000\000\n\161\n\161\n\161\n\161\n\161\n\161\000\000\000\000\n\161\n\161\n\161\004\237\000\000\n\242\t\250\n\161\n\161\n\161\n\161\n\141\n\141\000\000\002\018\000\000\n\141\002\150\004\237\n\141\000\000\b\186\n\141\000\000\n\141\n\246\000\000\n\141\004\237\n\141\n\141\n\141\004\237\n\141\n\141\n\141\000\000\000\000\000\000\000\000\000\000\n\141\n\141\n\141\n\141\n\141\000\000\n\141\nz\000\000\000\000\000\000\000\000\n\141\n\141\n\141\n\141\n\141\"n\001\226\n\141\000\000\000\000\000\000\000\000\n\141\000\000\n\141\n\141\000\242\000\000\000\000\021\130\n\141\n\141\n\141\000\000\000\000\000\000\000\000\000\000\000\000\n\141\n\141\n\141\n\141\n\141\n\141\n\141\n\141\n\141\000\000\011\178\012\142\000\000\n\141\n\141\000\000\006\162\000\000\000\000\000\000\000\000\n\141\n\141\n\141\000\000\n\141\n\141\n\141\000\000\n\141\011\186\000\000\012\150\n\141\000\000\n\141\n\141\000\000\n\141\n\141\n\141\n\141\n\141\n\141\015\017\000\000\n\141\n\141\n\141\000\000\000\000\031\190\t\250\n\141\n\141\n\141\n\141\002)\002)\000\000\000\000\000\000\002)\015\017\015\017\002)\000\000\015\017\002)\000\000\002)\031\194\000\000\002)\000\000\002)\002)\002)\000\000\002)\002)\002)\000\000\000\000\000\000\t\250\b\173\002)\002)\002)\002)\002)\000\000\002)\nz\000\000\000\000\000\000\000\000\002)\002)\002)\002)\002)\022\158\b\173\002)\000\000\000\242\b\173\000\000\002)\000\000\002)\002)\000\242\000\000\000\000\000\000\002)\002)\002)\000\000\000\000\000\000\000\000\000\000\nz\002)\002)\002)\002)\002)\002)\002)\002)\002)\t\250\015\017\002)\000\000\002)\002)\000\000\000\000\000\000\000\000\000\000\000\242\002)\002)\002)\000\000\002)\002)\002)\022\242\002)\000\000\000\000\000\000\002)\000\000\002)\002)\001\210\012j\002)\002)\002)\002)\002)\015\r\000\000\002)\002)\rv!>\000\000\nz\006\130\002)\002)\002)\002)\002\137\002\137\000\000\000\000\000\000\002\137\015\r\015\r\002\137\000\000\015\r\002\137\000\000\002\137\000\000\000\242\002\137\000\000\002\137\002\137\002\137\000\000\002\137\002\137\002\137\002\174\000\000\000\000\t\250\b\153\002\137\002\137\002\137\002\137\002\137\000\000\002\137\000\000\000\000\000\000\000\000\000\000\002\137\002\137\002\137\002\137\002\137\023\014\b\153\002\137\000\000\000\242\b\153\000\000\002\137\003\210\002\137\002\137\006]\000\000\000\000\000\000\002\137\002\137\002\137\000\000\000\000\000\000\000\000\000\000\nz\002\137\002\137\002\137\002\137\002\137\002\137\002\137\002\137\002\137\t\250\015\r\002\137\000\000\002\137\002\137\000\000\000\000\000\000\000\000\000\242\000\242\002\137\002\137\002\137\000\000\002\137\002\137\002\137\023*\002\137\000\000\000\000\000\000\002\137\000\000\002\137\002\137\000\000\rB\002\137\002\137\002\137\002\137\002\137\t\250\000\000\002\137\002\137\002\137\005\029\000\000\nz\011\030\002\137\002\137\002\137\002\137\n9\n9\000\000\000\000\000\000\n9\023F\005\029\n9\000\000\b\186\n9\000\000\n9\000\000\000\242\n9\005\029\n9\n9\n9\005\029\n9\n9\n9\000\000\000\000\000\000\t\250\nz\n9\n9\n9\n9\n9\000\000\n9\000\000\000\000\000\000\000\000\000\000\n9\n9\n9\n9\n9\"\"\000\000\n9\000\242\000\000\000\000\000\000\n9\000\000\n9\n9\000\000\000\000\000\000\000\000\n9\n9\n9\000\000\000\000\000\000\000\000\000\000\nz\n9\n9\n9\n9\n9\n9\n9\n9\n9\000\000\000\000\n9\000\000\n9\n9\000\000\000\000\000\000\000\000\000\242\000\242\n9\n9\n9\000\000\n9\n9\n9\000\000\n9\000\000\000\000\000\000\n9\000\000\n9\n9\000\000\012j\n9\n9\n9\n9\n9\000\000\000\000\n9\n9\rv\005\r\000\000\000\000\000\000\n9\n9\n9\n9\003\193\003\193\000\000\000\000\000\000\003\193\000\000\005\r\003\193\000\000\b\186\003\193\000\000\003\193\000\000\000\000\r\154\005\r\003\193\r\238\003\193\005\r\003\193\003\193\003\193\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003\193\000\000\000\000\000\000\000\000\000\000\003\193\003\193\014\146\014\170\003\193\000\000\000\000\003\193\000\000\000\000\000\000\000\000\003\193\000\000\014\194\003\193\000\000\000\000\000\000\000\000\003\193\003\193\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\193\003\193\r\178\0142\014\218\014\242\015\"\003\193\003\193\000\000\000\000\003\193\000\000\003\193\015:\000\000\000\000\000\000\000\000\000\242\000\000\003\193\003\193\015R\000\000\003\193\003\193\003\193\000\000\003\193\000\000\000\000\000\000\003\193\000\000\003\193\003\193\000\000\015\178\003\193\015\234\015\n\003\193\003\193\000\000\000\000\003\193\015j\003\193\012\174\000\000\000\000\000\000\003\193\003\193\015\130\015\154\002\233\002\233\000\000\000\000\000\000\002\233\000\000\007\210\002\233\000\000\007\142\002\233\000\000\002\233\000\000\000\000\002\233\b\026\002\233\002\233\002\233\b&\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\002\233\000\000\002\233\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\002\233\000\000\000\000\002\233\000\000\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\000\000\000\000\000\000\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\002\233\002\233\002\233\002\233\002\233\000\000\000\000\002\233\000\000\002\233\002\233\000\000\000\000\000\000\000\000\000\242\000\000\002\233\002\233\002\233\000\000\002\233\002\233\002\233\000\000\002\233\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\012j\002\233\002\233\002\233\002\233\002\233\000\000\000\000\002\233\002\233\rv\016\146\000\000\000\000\000\000\002\233\002\233\002\233\002\233\002\229\002\229\000\000\000\000\000\000\002\229\000\000\016\154\002\229\000\000\b\186\002\229\000\000\002\229\000\000\000\000\002\229\016\206\002\229\002\229\002\229\016\218\002\229\002\229\002\229\000\000\000\000\000\000\000\000\000\000\002\229\002\229\002\229\002\229\002\229\000\000\002\229\000\000\000\000\000\000\000\000\000\000\002\229\002\229\002\229\002\229\002\229\000\000\000\000\002\229\000\000\000\000\000\000\000\000\002\229\000\000\002\229\002\229\000\000\000\000\000\000\000\000\002\229\002\229\002\229\000\000\000\000\000\000\000\000\000\000\000\000\002\229\002\229\r\178\002\229\002\229\002\229\002\229\002\229\002\229\000\000\000\000\002\229\000\000\002\229\002\229\000\000\000\000\000\000\000\000\000\242\000\000\002\229\002\229\002\229\000\000\002\229\002\229\002\229\000\000\002\229\000\000\000\000\000\000\002\229\000\000\002\229\002\229\000\000\002\229\002\229\002\229\002\229\002\229\002\229\000\000\000\000\002\229\002\229\002\229\004\253\000\000\000\000\000\000\002\229\002\229\002\229\002\229\002\185\002\185\000\000\000\000\000\000\002\185\000\000\004\253\002\185\000\000\b\186\002\185\000\000\002\185\000\000\000\000\002\185\004\253\002\185\002\185\002\185\004\253\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\002\185\002\185\002\185\002\185\002\185\000\000\002\185\000\000\000\000\000\000\000\000\000\000\002\185\002\185\002\185\002\185\002\185\000\000\000\000\002\185\000\000\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\000\000\000\000\000\000\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\000\000\002\185\002\185\002\185\002\185\002\185\002\185\002\185\002\185\002\185\000\000\000\000\002\185\000\000\002\185\002\185\000\000\000\000\000\000\000\000\000\242\000\000\002\185\002\185\002\185\000\000\002\185\002\185\002\185\000\000\002\185\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\012j\002\185\002\185\002\185\002\185\002\185\000\000\000\000\002\185\002\185\rv\t\157\000\000\000\000\000\000\002\185\002\185\002\185\002\185\002\181\002\181\000\000\000\000\000\000\002\181\000\000\007\210\002\181\000\000\007\142\002\181\000\000\002\181\000\000\000\000\002\181\t\157\002\181\002\181\002\181\t\157\002\181\002\181\002\181\000\000\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\181\000\000\002\181\000\000\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\181\000\000\000\000\002\181\000\000\000\000\000\000\000\000\002\181\000\000\002\181\002\181\000\000\000\000\000\000\000\000\002\181\002\181\002\181\000\000\000\000\000\000\000\000\000\000\000\000\002\181\002\181\r\178\002\181\002\181\002\181\002\181\002\181\002\181\000\000\000\000\002\181\000\000\002\181\002\181\000\000\000\000\000\000\000\000\000\242\000\000\002\181\002\181\002\181\000\000\002\181\002\181\002\181\000\000\002\181\000\000\000\000\000\000\002\181\000\000\002\181\002\181\000\000\002\181\002\181\002\181\002\181\002\181\002\181\000\000\000\000\002\181\002\181\002\181\020\006\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\209\002\209\000\000\000\000\000\000\002\209\000\000\016\154\002\209\000\000\b\186\002\209\000\000\002\209\000\000\000\000\002\209\016\206\002\209\002\209\002\209\016\218\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\209\000\000\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\209\000\000\000\000\002\209\000\000\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\000\000\000\000\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\209\002\209\002\209\002\209\002\209\000\000\000\000\002\209\000\000\002\209\002\209\000\000\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\000\000\002\209\002\209\002\209\000\000\002\209\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\012j\002\209\002\209\002\209\002\209\002\209\b\149\000\000\002\209\002\209\rv\000\000\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\205\002\205\000\000\000\000\000\000\002\205\b\149\000\000\002\205\000\000\b\149\002\205\000\000\002\205\000\000\000\000\r\154\000\000\002\205\002\205\002\205\000\000\002\205\002\205\002\205\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\014\026\002\205\000\000\002\205\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\002\205\002\205\000\000\000\000\002\205\000\000\000\242\000\000\000\000\002\205\000\000\002\205\002\205\000\000\000\000\000\000\000\000\002\205\002\205\002\205\000\000\000\000\000\000\000\000\000\000\000\000\002\205\002\205\r\178\0142\002\205\002\205\002\205\002\205\002\205\000\000\b\149\002\205\000\000\002\205\002\205\000\000\000\000\000\000\000\000\000\000\000\000\002\205\002\205\002\205\000\000\002\205\002\205\002\205\000\000\002\205\000\000\000\000\000\000\002\205\000\000\002\205\002\205\000\000\002\205\002\205\002\205\002\205\002\205\002\205\000\000\000\000\002\205\002\205\002\205\000\000\000\000\000\000\000\000\002\205\002\205\002\205\002\205\002\241\002\241\000\000\000\000\000\000\002\241\000\000\000\000\002\241\000\000\000\000\002\241\000\000\002\241\000\000\000\000\002\241\000\000\002\241\002\241\002\241\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\241\000\000\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\000\000\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\000\000\000\000\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\000\000\002\241\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\000\000\002\241\002\241\002\241\000\000\002\241\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\012j\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\002\241\rv\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\237\002\237\000\000\000\000\000\000\002\237\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\000\000\000\000\002\237\000\000\002\237\002\237\002\237\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\000\000\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\000\000\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\000\000\000\000\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\r\178\002\237\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\000\000\002\237\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\000\000\002\237\002\237\002\237\000\000\002\237\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\002\237\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\177\002\177\000\000\000\000\000\000\002\177\000\000\000\000\002\177\000\000\000\000\002\177\000\000\002\177\000\000\000\000\002\177\000\000\002\177\002\177\002\177\000\000\002\177\002\177\002\177\000\000\000\000\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\177\000\000\002\177\000\000\000\000\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\177\000\000\000\000\002\177\000\000\000\000\000\000\000\000\002\177\000\000\002\177\002\177\000\000\000\000\000\000\000\000\002\177\002\177\002\177\000\000\000\000\000\000\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\177\002\177\002\177\002\177\002\177\000\000\000\000\002\177\000\000\002\177\002\177\000\000\000\000\000\000\000\000\000\000\000\000\002\177\002\177\002\177\000\000\002\177\002\177\002\177\000\000\002\177\000\000\000\000\000\000\002\177\000\000\002\177\002\177\000\000\012j\002\177\002\177\002\177\002\177\002\177\000\000\000\000\002\177\002\177\rv\000\000\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\173\002\173\000\000\000\000\000\000\002\173\000\000\000\000\002\173\000\000\000\000\002\173\000\000\002\173\000\000\000\000\002\173\000\000\002\173\002\173\002\173\000\000\002\173\002\173\002\173\000\000\000\000\000\000\000\000\000\000\002\173\002\173\002\173\002\173\002\173\000\000\002\173\000\000\000\000\000\000\000\000\000\000\002\173\002\173\002\173\002\173\002\173\000\000\000\000\002\173\000\000\000\000\000\000\000\000\002\173\000\000\002\173\002\173\000\000\000\000\000\000\000\000\002\173\002\173\002\173\000\000\000\000\000\000\000\000\000\000\000\000\002\173\002\173\r\178\002\173\002\173\002\173\002\173\002\173\002\173\000\000\000\000\002\173\000\000\002\173\002\173\000\000\000\000\000\000\000\000\000\000\000\000\002\173\002\173\002\173\000\000\002\173\002\173\002\173\000\000\002\173\000\000\000\000\000\000\002\173\000\000\002\173\002\173\000\000\002\173\002\173\002\173\002\173\002\173\002\173\000\000\000\000\002\173\002\173\002\173\000\000\000\000\000\000\000\000\002\173\002\173\002\173\002\173\002\201\002\201\000\000\000\000\000\000\002\201\000\000\000\000\002\201\000\000\000\000\002\201\000\000\002\201\000\000\000\000\002\201\000\000\002\201\002\201\002\201\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\201\000\000\002\201\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\201\000\000\000\000\002\201\000\000\000\000\000\000\000\000\002\201\000\000\002\201\002\201\000\000\000\000\000\000\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\201\002\201\002\201\002\201\002\201\000\000\000\000\002\201\000\000\002\201\002\201\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002\201\002\201\000\000\002\201\002\201\002\201\000\000\002\201\000\000\000\000\000\000\002\201\000\000\002\201\002\201\000\000\012j\002\201\002\201\002\201\002\201\002\201\000\000\000\000\002\201\002\201\rv\000\000\000\000\000\000\000\000\002\201\002\201\002\201\002\201\002\197\002\197\000\000\000\000\000\000\002\197\000\000\000\000\002\197\000\000\000\000\002\197\000\000\002\197\000\000\000\000\r\154\000\000\002\197\002\197\002\197\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\014\026\002\197\000\000\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\002\197\002\197\000\000\000\000\002\197\000\000\000\000\000\000\000\000\002\197\000\000\002\197\002\197\000\000\000\000\000\000\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\000\000\000\000\002\197\002\197\r\178\0142\002\197\002\197\002\197\002\197\002\197\000\000\000\000\002\197\000\000\002\197\002\197\000\000\000\000\000\000\000\000\000\000\000\000\002\197\002\197\002\197\000\000\002\197\002\197\002\197\000\000\002\197\000\000\000\000\000\000\002\197\000\000\002\197\002\197\000\000\002\197\002\197\002\197\002\197\002\197\002\197\000\000\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\002\197\002\197\002\197\002\197\002\193\002\193\000\000\000\000\000\000\002\193\000\000\000\000\002\193\000\000\000\000\002\193\000\000\002\193\000\000\000\000\002\193\000\000\002\193\002\193\002\193\000\000\002\193\002\193\002\193\000\000\000\000\000\000\000\000\000\000\002\193\002\193\002\193\002\193\002\193\000\000\002\193\000\000\000\000\000\000\000\000\000\000\002\193\002\193\002\193\002\193\002\193\000\000\000\000\002\193\000\000\000\000\000\000\000\000\002\193\000\000\002\193\002\193\000\000\000\000\000\000\000\000\002\193\002\193\002\193\000\000\000\000\000\000\000\000\000\000\000\000\002\193\002\193\002\193\002\193\002\193\002\193\002\193\002\193\002\193\000\000\000\000\002\193\000\000\002\193\002\193\000\000\000\000\000\000\000\000\000\000\000\000\002\193\002\193\002\193\000\000\002\193\002\193\002\193\000\000\002\193\000\000\000\000\000\000\002\193\000\000\002\193\002\193\000\000\012j\002\193\002\193\002\193\002\193\002\193\000\000\000\000\002\193\002\193\rv\000\000\000\000\000\000\000\000\002\193\002\193\002\193\002\193\002\189\002\189\000\000\000\000\000\000\002\189\000\000\000\000\002\189\000\000\000\000\002\189\000\000\002\189\000\000\000\000\r\154\000\000\002\189\002\189\002\189\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\014\026\002\189\000\000\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\002\189\000\000\000\000\002\189\000\000\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\000\000\000\000\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\000\000\000\000\002\189\002\189\r\178\0142\002\189\002\189\002\189\002\189\002\189\000\000\000\000\002\189\000\000\002\189\002\189\000\000\000\000\000\000\000\000\000\000\000\000\002\189\002\189\002\189\000\000\002\189\002\189\002\189\000\000\002\189\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\002\189\002\189\002\189\002\189\002\189\002\189\000\000\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\003\017\003\017\000\000\000\000\000\000\003\017\000\000\000\000\003\017\000\000\000\000\003\017\000\000\003\017\000\000\000\000\003\017\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\000\000\000\000\003\017\000\000\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\000\000\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\012j\003\017\003\017\003\017\003\017\003\017\000\000\000\000\003\017\003\017\rv\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\r\003\r\000\000\000\000\000\000\003\r\000\000\000\000\003\r\000\000\000\000\003\r\000\000\003\r\000\000\000\000\r\154\000\000\003\r\003\r\003\r\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003\r\000\000\000\000\000\000\000\000\000\000\003\r\003\r\014\146\014\170\003\r\000\000\000\000\003\r\000\000\000\000\000\000\000\000\003\r\000\000\014\194\003\r\000\000\000\000\000\000\000\000\003\r\003\r\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\r\003\r\r\178\0142\014\218\014\242\015\"\003\r\003\r\000\000\000\000\003\r\000\000\003\r\015:\000\000\000\000\000\000\000\000\000\000\000\000\003\r\003\r\015R\000\000\003\r\003\r\003\r\000\000\003\r\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\003\r\003\r\003\r\015\n\003\r\003\r\000\000\000\000\003\r\015j\003\r\000\000\000\000\000\000\000\000\003\r\003\r\015\130\015\154\002\225\002\225\000\000\000\000\000\000\002\225\000\000\000\000\002\225\000\000\000\000\002\225\000\000\002\225\000\000\000\000\002\225\000\000\002\225\002\225\002\225\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\225\000\000\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\000\000\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\000\000\000\000\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\000\000\002\225\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\000\000\002\225\002\225\002\225\000\000\002\225\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\012j\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\002\225\rv\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\221\002\221\000\000\000\000\000\000\002\221\000\000\000\000\002\221\000\000\000\000\002\221\000\000\002\221\000\000\000\000\r\154\000\000\002\221\002\221\002\221\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\014\026\002\221\000\000\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\002\221\000\000\000\000\002\221\000\000\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\000\000\000\000\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\r\178\0142\002\221\002\221\002\221\002\221\002\221\000\000\000\000\002\221\000\000\002\221\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\000\000\002\221\002\221\002\221\000\000\002\221\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\002\221\002\221\002\221\002\221\002\221\002\221\000\000\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\002\217\002\217\000\000\000\000\000\000\002\217\000\000\000\000\002\217\000\000\000\000\002\217\000\000\002\217\000\000\000\000\002\217\000\000\002\217\002\217\002\217\000\000\002\217\002\217\002\217\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\002\217\002\217\000\000\002\217\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\002\217\002\217\000\000\000\000\002\217\000\000\000\000\000\000\000\000\002\217\000\000\002\217\002\217\000\000\000\000\000\000\000\000\002\217\002\217\002\217\000\000\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\002\217\002\217\002\217\002\217\002\217\002\217\000\000\000\000\002\217\000\000\002\217\002\217\000\000\000\000\000\000\000\000\000\000\000\000\002\217\002\217\002\217\000\000\002\217\002\217\002\217\000\000\002\217\000\000\000\000\000\000\002\217\000\000\002\217\002\217\000\000\012j\002\217\002\217\002\217\002\217\002\217\000\000\000\000\002\217\002\217\rv\000\000\000\000\000\000\000\000\002\217\002\217\002\217\002\217\002\213\002\213\000\000\000\000\000\000\002\213\000\000\000\000\002\213\000\000\000\000\002\213\000\000\002\213\000\000\000\000\r\154\000\000\002\213\002\213\002\213\000\000\002\213\002\213\002\213\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\014\026\002\213\000\000\002\213\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\002\213\002\213\000\000\000\000\002\213\000\000\000\000\000\000\000\000\002\213\000\000\002\213\002\213\000\000\000\000\000\000\000\000\002\213\002\213\002\213\000\000\000\000\000\000\000\000\000\000\000\000\002\213\002\213\r\178\0142\002\213\002\213\002\213\002\213\002\213\000\000\000\000\002\213\000\000\002\213\002\213\000\000\000\000\000\000\000\000\000\000\000\000\002\213\002\213\002\213\000\000\002\213\002\213\002\213\000\000\002\213\000\000\000\000\000\000\002\213\000\000\002\213\002\213\000\000\002\213\002\213\002\213\002\213\002\213\002\213\000\000\000\000\002\213\002\213\002\213\000\000\000\000\000\000\000\000\002\213\002\213\002\213\002\213\003\001\003\001\000\000\000\000\000\000\003\001\000\000\000\000\003\001\000\000\000\000\003\001\000\000\003\001\000\000\000\000\003\001\000\000\003\001\003\001\003\001\000\000\003\001\003\001\003\001\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\003\001\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\000\000\000\000\000\000\000\000\003\001\000\000\003\001\003\001\000\000\000\000\000\000\000\000\003\001\003\001\003\001\000\000\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\000\000\003\001\003\001\000\000\000\000\000\000\000\000\000\000\000\000\003\001\003\001\003\001\000\000\003\001\003\001\003\001\000\000\003\001\000\000\000\000\000\000\003\001\000\000\003\001\003\001\000\000\012j\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\003\001\rv\000\000\000\000\000\000\000\000\003\001\003\001\003\001\003\001\002\253\002\253\000\000\000\000\000\000\002\253\000\000\000\000\002\253\000\000\000\000\002\253\000\000\002\253\000\000\000\000\r\154\000\000\002\253\002\253\002\253\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\002\253\000\000\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\014\146\014\170\002\253\000\000\000\000\002\253\000\000\000\000\000\000\000\000\002\253\000\000\002\253\002\253\000\000\000\000\000\000\000\000\002\253\002\253\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\253\002\253\r\178\0142\014\218\014\242\002\253\002\253\002\253\000\000\000\000\002\253\000\000\002\253\002\253\000\000\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\000\000\002\253\002\253\002\253\000\000\002\253\000\000\000\000\000\000\002\253\000\000\002\253\002\253\000\000\002\253\002\253\002\253\015\n\002\253\002\253\000\000\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\169\002\169\000\000\000\000\000\000\002\169\000\000\000\000\002\169\000\000\000\000\002\169\000\000\002\169\000\000\000\000\002\169\000\000\002\169\002\169\002\169\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\002\169\000\000\002\169\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\002\169\000\000\000\000\002\169\000\000\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\000\000\000\000\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\002\169\002\169\002\169\002\169\002\169\000\000\000\000\002\169\000\000\002\169\002\169\000\000\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\000\000\002\169\002\169\002\169\000\000\002\169\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\012j\002\169\002\169\002\169\002\169\002\169\000\000\000\000\002\169\002\169\rv\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\002\165\002\165\000\000\000\000\000\000\002\165\000\000\000\000\002\165\000\000\000\000\002\165\000\000\002\165\000\000\000\000\r\154\000\000\002\165\002\165\002\165\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\014\026\002\165\000\000\002\165\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\000\000\000\000\000\000\000\000\002\165\000\000\002\165\002\165\000\000\000\000\000\000\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\000\000\000\000\002\165\002\165\r\178\0142\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\000\000\002\165\002\165\000\000\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\000\000\002\165\002\165\002\165\000\000\002\165\000\000\000\000\000\000\002\165\000\000\002\165\002\165\000\000\002\165\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\161\002\161\000\000\000\000\000\000\002\161\000\000\000\000\002\161\000\000\000\000\002\161\000\000\002\161\000\000\000\000\002\161\000\000\002\161\002\161\002\161\000\000\002\161\002\161\002\161\000\000\000\000\000\000\000\000\000\000\002\161\002\161\002\161\002\161\002\161\000\000\002\161\000\000\000\000\000\000\000\000\000\000\002\161\002\161\002\161\002\161\002\161\000\000\000\000\002\161\000\000\000\000\000\000\000\000\002\161\000\000\002\161\002\161\000\000\000\000\000\000\000\000\002\161\002\161\002\161\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\161\002\161\002\161\002\161\002\161\002\161\002\161\002\161\000\000\000\000\002\161\000\000\002\161\002\161\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\161\002\161\000\000\002\161\002\161\002\161\000\000\002\161\000\000\000\000\000\000\002\161\000\000\002\161\002\161\000\000\012j\002\161\002\161\002\161\002\161\002\161\000\000\000\000\002\161\002\161\rv\000\000\000\000\000\000\000\000\002\161\002\161\002\161\002\161\002\157\002\157\000\000\000\000\000\000\002\157\000\000\000\000\002\157\000\000\000\000\002\157\000\000\002\157\000\000\000\000\r\154\000\000\002\157\002\157\002\157\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\002\157\000\000\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\014\146\014\170\002\157\000\000\000\000\002\157\000\000\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\000\000\000\000\000\002\157\002\157\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\r\178\0142\014\218\014\242\002\157\002\157\002\157\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\000\000\002\157\002\157\002\157\000\000\002\157\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\002\157\002\157\002\157\015\n\002\157\002\157\000\000\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\003Q\003Q\000\000\000\000\000\000\003Q\000\000\000\000\003Q\000\000\000\000\003Q\000\000\003Q\000\000\000\000\003Q\000\000\003Q\003Q\003Q\000\000\003Q\003Q\003Q\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003Q\000\000\003Q\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003Q\000\000\000\000\003Q\000\000\000\000\000\000\000\000\003Q\000\000\003Q\003Q\000\000\000\000\000\000\000\000\003Q\003Q\003Q\000\000\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003Q\003Q\003Q\003Q\003Q\000\000\000\000\003Q\000\000\003Q\003Q\000\000\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\000\000\003Q\003Q\003Q\000\000\003Q\000\000\000\000\000\000\003Q\000\000\003Q\003Q\000\000\012j\003Q\003Q\003Q\003Q\003Q\000\000\000\000\003Q\003Q\rv\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003M\003M\000\000\000\000\000\000\003M\000\000\000\000\003M\000\000\000\000\003M\000\000\003M\000\000\000\000\r\154\000\000\003M\003M\003M\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\003M\000\000\003M\000\000\000\000\000\000\000\000\000\000\003M\003M\014\146\014\170\003M\000\000\000\000\003M\000\000\000\000\000\000\000\000\003M\000\000\003M\003M\000\000\000\000\000\000\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\000\000\000\000\003M\003M\r\178\0142\014\218\003M\003M\003M\003M\000\000\000\000\003M\000\000\003M\003M\000\000\000\000\000\000\000\000\000\000\000\000\003M\003M\003M\000\000\003M\003M\003M\000\000\003M\000\000\000\000\000\000\003M\000\000\003M\003M\000\000\003M\003M\003M\015\n\003M\003M\000\000\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\003M\003M\003M\003M\002\153\002\153\000\000\000\000\000\000\002\153\000\000\000\000\002\153\000\000\000\000\002\153\000\000\002\153\000\000\000\000\002\153\000\000\002\153\002\153\002\153\000\000\002\153\002\153\002\153\000\000\000\000\000\000\000\000\000\000\002\153\002\153\002\153\002\153\002\153\000\000\002\153\000\000\000\000\000\000\000\000\000\000\002\153\002\153\002\153\002\153\002\153\000\000\000\000\002\153\000\000\000\000\000\000\000\000\002\153\000\000\002\153\002\153\000\000\000\000\000\000\000\000\002\153\002\153\002\153\000\000\000\000\000\000\000\000\000\000\000\000\002\153\002\153\002\153\002\153\002\153\002\153\002\153\002\153\002\153\000\000\000\000\002\153\000\000\002\153\002\153\000\000\000\000\000\000\000\000\000\000\000\000\002\153\002\153\002\153\000\000\002\153\002\153\002\153\000\000\002\153\000\000\000\000\000\000\002\153\000\000\002\153\002\153\000\000\012j\002\153\002\153\002\153\002\153\002\153\000\000\000\000\002\153\002\153\rv\000\000\000\000\000\000\000\000\002\153\002\153\002\153\002\153\002\149\002\149\000\000\000\000\000\000\002\149\000\000\000\000\002\149\000\000\000\000\002\149\000\000\002\149\000\000\000\000\r\154\000\000\002\149\002\149\002\149\000\000\002\149\002\149\002\149\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\002\149\000\000\002\149\000\000\000\000\000\000\000\000\000\000\002\149\002\149\014\146\014\170\002\149\000\000\000\000\002\149\000\000\000\000\000\000\000\000\002\149\000\000\002\149\002\149\000\000\000\000\000\000\000\000\002\149\002\149\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\149\002\149\r\178\0142\014\218\014\242\002\149\002\149\002\149\000\000\000\000\002\149\000\000\002\149\002\149\000\000\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\000\000\002\149\002\149\002\149\000\000\002\149\000\000\000\000\000\000\002\149\000\000\002\149\002\149\000\000\002\149\002\149\002\149\015\n\002\149\002\149\000\000\000\000\002\149\002\149\002\149\000\000\000\000\000\000\000\000\002\149\002\149\002\149\002\149\003\t\003\t\000\000\000\000\000\000\003\t\000\000\000\000\003\t\000\000\000\000\003\t\000\000\003\t\000\000\000\000\003\t\000\000\003\t\003\t\003\t\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\t\000\000\003\t\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\t\000\000\000\000\003\t\000\000\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\t\003\t\003\t\003\t\003\t\000\000\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\000\000\003\t\003\t\003\t\000\000\003\t\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\012j\003\t\003\t\003\t\003\t\003\t\000\000\000\000\003\t\003\t\rv\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\005\003\005\000\000\000\000\000\000\003\005\000\000\000\000\003\005\000\000\000\000\003\005\000\000\003\005\000\000\000\000\r\154\000\000\003\005\003\005\003\005\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\003\005\000\000\003\005\000\000\000\000\000\000\000\000\000\000\003\005\003\005\014\146\014\170\003\005\000\000\000\000\003\005\000\000\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\003\005\003\005\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\r\178\0142\014\218\014\242\003\005\003\005\003\005\000\000\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\000\000\003\005\003\005\003\005\000\000\003\005\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\003\005\003\005\003\005\015\n\003\005\003\005\000\000\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\002\249\002\249\000\000\000\000\000\000\002\249\000\000\000\000\002\249\000\000\000\000\002\249\000\000\002\249\000\000\000\000\002\249\000\000\002\249\002\249\002\249\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\000\000\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\000\000\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\012j\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\002\249\rv\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\245\002\245\000\000\000\000\000\000\002\245\000\000\000\000\002\245\000\000\000\000\002\245\000\000\002\245\000\000\000\000\r\154\000\000\002\245\002\245\002\245\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\002\245\000\000\002\245\000\000\000\000\000\000\000\000\000\000\002\245\002\245\014\146\014\170\002\245\000\000\000\000\002\245\000\000\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\000\000\000\000\000\000\002\245\002\245\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\r\178\0142\014\218\014\242\002\245\002\245\002\245\000\000\000\000\002\245\000\000\002\245\002\245\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\000\000\002\245\002\245\002\245\000\000\002\245\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\002\245\002\245\002\245\015\n\002\245\002\245\000\000\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\003\025\003\025\000\000\000\000\000\000\003\025\000\000\000\000\003\025\000\000\000\000\003\025\000\000\003\025\000\000\000\000\003\025\000\000\003\025\003\025\003\025\000\000\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\025\000\000\003\025\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\025\000\000\000\000\003\025\000\000\000\000\000\000\000\000\003\025\000\000\003\025\003\025\000\000\000\000\000\000\000\000\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\025\003\025\003\025\003\025\003\025\000\000\000\000\003\025\000\000\003\025\003\025\000\000\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\000\000\003\025\003\025\003\025\000\000\003\025\000\000\000\000\000\000\003\025\000\000\003\025\003\025\000\000\012j\003\025\003\025\003\025\003\025\003\025\000\000\000\000\003\025\003\025\rv\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\021\003\021\000\000\000\000\000\000\003\021\000\000\000\000\003\021\000\000\000\000\003\021\000\000\003\021\000\000\000\000\r\154\000\000\003\021\003\021\003\021\000\000\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003\021\000\000\000\000\000\000\000\000\000\000\003\021\003\021\014\146\014\170\003\021\000\000\000\000\003\021\000\000\000\000\000\000\000\000\003\021\000\000\014\194\003\021\000\000\000\000\000\000\000\000\003\021\003\021\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\021\003\021\r\178\0142\014\218\014\242\015\"\003\021\003\021\000\000\000\000\003\021\000\000\003\021\015:\000\000\000\000\000\000\000\000\000\000\000\000\003\021\003\021\015R\000\000\003\021\003\021\003\021\000\000\003\021\000\000\000\000\000\000\003\021\000\000\003\021\003\021\000\000\003\021\003\021\003\021\015\n\003\021\003\021\000\000\000\000\003\021\015j\003\021\000\000\000\000\000\000\000\000\003\021\003\021\015\130\015\154\003!\003!\000\000\000\000\000\000\003!\000\000\000\000\003!\000\000\000\000\003!\000\000\003!\000\000\000\000\003!\000\000\003!\003!\003!\000\000\003!\003!\003!\000\000\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003!\000\000\003!\000\000\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003!\000\000\000\000\003!\000\000\000\000\000\000\000\000\003!\000\000\003!\003!\000\000\000\000\000\000\000\000\003!\003!\003!\000\000\000\000\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003!\003!\003!\003!\003!\000\000\000\000\003!\000\000\003!\003!\000\000\000\000\000\000\000\000\000\000\000\000\003!\003!\003!\000\000\003!\003!\003!\000\000\003!\000\000\000\000\000\000\003!\000\000\003!\003!\000\000\012j\003!\003!\003!\003!\003!\000\000\000\000\003!\003!\rv\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003\029\003\029\000\000\000\000\000\000\003\029\000\000\000\000\003\029\000\000\000\000\003\029\000\000\003\029\000\000\000\000\r\154\000\000\003\029\003\029\003\029\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\003\029\000\000\003\029\000\000\000\000\000\000\000\000\000\000\003\029\003\029\014\146\014\170\003\029\000\000\000\000\003\029\000\000\000\000\000\000\000\000\003\029\000\000\014\194\003\029\000\000\000\000\000\000\000\000\003\029\003\029\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\029\003\029\r\178\0142\014\218\014\242\015\"\003\029\003\029\000\000\000\000\003\029\000\000\003\029\015:\000\000\000\000\000\000\000\000\000\000\000\000\003\029\003\029\015R\000\000\003\029\003\029\003\029\000\000\003\029\000\000\000\000\000\000\003\029\000\000\003\029\003\029\000\000\003\029\003\029\003\029\015\n\003\029\003\029\000\000\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\003\029\003\029\015\130\015\154\003)\003)\000\000\000\000\000\000\003)\000\000\000\000\003)\000\000\000\000\003)\000\000\003)\000\000\000\000\003)\000\000\003)\003)\003)\000\000\003)\003)\003)\000\000\000\000\000\000\000\000\000\000\003)\003)\003)\003)\003)\000\000\003)\000\000\000\000\000\000\000\000\000\000\003)\003)\003)\003)\003)\000\000\000\000\003)\000\000\000\000\000\000\000\000\003)\000\000\003)\003)\000\000\000\000\000\000\000\000\003)\003)\003)\000\000\000\000\000\000\000\000\000\000\000\000\003)\003)\003)\003)\003)\003)\003)\003)\003)\000\000\000\000\003)\000\000\003)\003)\000\000\000\000\000\000\000\000\000\000\000\000\003)\003)\003)\000\000\003)\003)\003)\000\000\003)\000\000\000\000\000\000\003)\000\000\003)\003)\000\000\012j\003)\003)\003)\003)\003)\000\000\000\000\003)\003)\rv\000\000\000\000\000\000\000\000\003)\003)\003)\003)\003%\003%\000\000\000\000\000\000\003%\000\000\000\000\003%\000\000\000\000\003%\000\000\003%\000\000\000\000\r\154\000\000\003%\003%\003%\000\000\003%\003%\003%\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\003%\000\000\003%\000\000\000\000\000\000\000\000\000\000\003%\003%\014\146\014\170\003%\000\000\000\000\003%\000\000\000\000\000\000\000\000\003%\000\000\014\194\003%\000\000\000\000\000\000\000\000\003%\003%\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003%\003%\r\178\0142\014\218\014\242\015\"\003%\003%\000\000\000\000\003%\000\000\003%\015:\000\000\000\000\000\000\000\000\000\000\000\000\003%\003%\015R\000\000\003%\003%\003%\000\000\003%\000\000\000\000\000\000\003%\000\000\003%\003%\000\000\003%\003%\003%\015\n\003%\003%\000\000\000\000\003%\003%\003%\000\000\000\000\000\000\000\000\003%\003%\015\130\015\154\nM\nM\000\000\000\000\000\000\nM\000\000\000\000\nM\000\000\000\000\nM\000\000\nM\000\000\000\000\nM\000\000\nM\nM\nM\000\000\nM\nM\nM\000\000\000\000\000\000\000\000\000\000\nM\nM\nM\nM\nM\000\000\nM\000\000\000\000\000\000\000\000\000\000\nM\nM\nM\nM\nM\000\000\000\000\nM\000\000\000\000\000\000\000\000\nM\000\000\nM\nM\000\000\000\000\000\000\000\000\nM\nM\nM\000\000\000\000\000\000\000\000\000\000\000\000\nM\nM\nM\nM\nM\nM\nM\nM\nM\000\000\000\000\nM\000\000\nM\nM\000\000\000\000\000\000\000\000\000\000\000\000\nM\nM\nM\000\000\nM\nM\nM\000\000\nM\000\000\000\000\000\000\nM\000\000\nM\nM\000\000\012j\nM\nM\nM\nM\nM\000\000\000\000\nM\nM\rv\000\000\000\000\000\000\000\000\nM\nM\nM\nM\nI\nI\000\000\000\000\000\000\nI\000\000\000\000\nI\000\000\000\000\nI\000\000\nI\000\000\000\000\r\154\000\000\nI\nI\nI\000\000\nI\nI\nI\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\nI\000\000\000\000\000\000\000\000\000\000\nI\nI\014\146\014\170\nI\000\000\000\000\nI\000\000\000\000\000\000\000\000\nI\000\000\014\194\nI\000\000\000\000\000\000\000\000\nI\nI\000\242\000\000\000\000\000\000\000\000\000\000\000\000\nI\nI\r\178\0142\014\218\014\242\015\"\nI\nI\000\000\000\000\nI\000\000\nI\015:\000\000\000\000\000\000\000\000\000\000\000\000\nI\nI\015R\000\000\nI\nI\nI\000\000\nI\000\000\000\000\000\000\nI\000\000\nI\nI\000\000\nI\nI\nI\015\n\nI\nI\000\000\000\000\nI\015j\nI\000\000\000\000\000\000\000\000\nI\nI\015\130\015\154\0031\0031\000\000\000\000\000\000\0031\000\000\000\000\0031\000\000\000\000\0031\000\000\0031\000\000\000\000\0031\000\000\0031\0031\0031\000\000\0031\0031\0031\000\000\000\000\000\000\000\000\000\000\0031\0031\0031\0031\0031\000\000\0031\000\000\000\000\000\000\000\000\000\000\0031\0031\0031\0031\0031\000\000\000\000\0031\000\000\000\000\000\000\000\000\0031\000\000\0031\0031\000\000\000\000\000\000\000\000\0031\0031\0031\000\000\000\000\000\000\000\000\000\000\000\000\0031\0031\0031\0031\0031\0031\0031\0031\0031\000\000\000\000\0031\000\000\0031\0031\000\000\000\000\000\000\000\000\000\000\000\000\0031\0031\0031\000\000\0031\0031\0031\000\000\0031\000\000\000\000\000\000\0031\000\000\0031\0031\000\000\012j\0031\0031\0031\0031\0031\000\000\000\000\0031\0031\rv\000\000\000\000\000\000\000\000\0031\0031\0031\0031\003-\003-\000\000\000\000\000\000\003-\000\000\000\000\003-\000\000\000\000\003-\000\000\003-\000\000\000\000\r\154\000\000\003-\003-\003-\000\000\003-\003-\003-\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003-\000\000\000\000\000\000\000\000\000\000\003-\003-\014\146\014\170\003-\000\000\000\000\003-\000\000\000\000\000\000\000\000\003-\000\000\014\194\003-\000\000\000\000\000\000\000\000\003-\003-\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003-\003-\r\178\0142\014\218\014\242\015\"\003-\003-\000\000\000\000\003-\000\000\003-\015:\000\000\000\000\000\000\000\000\000\000\000\000\003-\003-\015R\000\000\003-\003-\003-\000\000\003-\000\000\000\000\000\000\003-\000\000\003-\003-\000\000\015\178\003-\015\234\015\n\003-\003-\000\000\000\000\003-\015j\003-\000\000\000\000\000\000\000\000\003-\003-\015\130\015\154\n5\n5\000\000\000\000\000\000\n5\000\000\000\000\n5\000\000\000\000\n5\000\000\n5\000\000\000\000\r\154\000\000\n5\n5\n5\000\000\n5\n5\n5\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\n5\000\000\000\000\000\000\000\000\000\000\n5\n5\014\146\014\170\n5\000\000\000\000\n5\000\000\000\000\000\000\000\000\n5\000\000\014\194\n5\000\000\000\000\000\000\000\000\n5\n5\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n5\n5\r\178\0142\014\218\014\242\015\"\n5\n5\000\000\000\000\n5\000\000\n5\015:\000\000\000\000\000\000\000\000\000\000\000\000\n5\n5\015R\000\000\n5\n5\n5\000\000\n5\000\000\000\000\000\000\n5\000\000\n5\n5\000\000\n5\n5\n5\015\n\n5\n5\000\000\000\000\n5\015j\n5\000\000\000\000\000\000\000\000\n5\n5\015\130\015\154\003\129\003\129\000\000\000\000\000\000\003\129\000\000\000\000\003\129\000\000\000\000\003\129\000\000\003\129\000\000\000\000\003\129\000\000\003\129\003\129\003\129\000\000\003\129\003\129\003\129\000\000\000\000\000\000\000\000\000\000\003\129\003\129\003\129\003\129\003\129\000\000\003\129\000\000\000\000\000\000\000\000\000\000\003\129\003\129\003\129\003\129\003\129\000\000\000\000\003\129\000\000\000\000\000\000\000\000\003\129\000\000\003\129\003\129\000\000\000\000\000\000\000\000\003\129\003\129\003\129\000\000\000\000\000\000\000\000\000\000\000\000\003\129\003\129\003\129\003\129\003\129\003\129\003\129\003\129\003\129\000\000\000\000\003\129\000\000\003\129\003\129\000\000\000\000\000\000\000\000\000\000\000\000\003\129\003\129\003\129\000\000\003\129\003\129\003\129\000\000\003\129\000\000\000\000\000\000\003\129\000\000\003\129\003\129\000\000\012j\003\129\003\129\003\129\003\129\003\129\000\000\000\000\003\129\003\129\rv\000\000\000\000\000\000\000\000\003\129\003\129\003\129\003\129\003}\003}\000\000\000\000\000\000\003}\000\000\000\000\003}\000\000\000\000\003}\000\000\003}\000\000\000\000\r\154\000\000\003}\003}\003}\000\000\003}\003}\003}\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003}\000\000\000\000\000\000\000\000\000\000\003}\003}\014\146\014\170\003}\000\000\000\000\003}\000\000\000\000\000\000\000\000\003}\000\000\014\194\003}\000\000\000\000\000\000\000\000\003}\003}\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003}\003}\r\178\0142\014\218\014\242\015\"\003}\003}\000\000\000\000\003}\000\000\003}\015:\000\000\000\000\000\000\000\000\000\000\000\000\003}\003}\015R\000\000\003}\003}\003}\000\000\003}\000\000\000\000\000\000\003}\000\000\003}\003}\000\000\015\178\003}\015\234\015\n\003}\003}\000\000\000\000\003}\015j\003}\000\000\000\000\000\000\000\000\003}\003}\015\130\015\154\003\161\003\161\000\000\000\000\000\000\003\161\000\000\000\000\003\161\000\000\000\000\003\161\000\000\003\161\000\000\000\000\003\161\000\000\003\161\003\161\003\161\000\000\003\161\003\161\003\161\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\161\000\000\003\161\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\161\000\000\000\000\003\161\000\000\000\000\000\000\000\000\003\161\000\000\003\161\003\161\000\000\000\000\000\000\000\000\003\161\003\161\003\161\000\000\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\161\003\161\003\161\003\161\003\161\000\000\000\000\003\161\000\000\003\161\003\161\000\000\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\000\000\003\161\003\161\003\161\000\000\003\161\000\000\000\000\000\000\003\161\000\000\003\161\003\161\000\000\012j\003\161\003\161\003\161\003\161\003\161\000\000\000\000\003\161\003\161\rv\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\157\003\157\000\000\000\000\000\000\003\157\000\000\000\000\003\157\000\000\000\000\003\157\000\000\003\157\000\000\000\000\r\154\000\000\003\157\003\157\003\157\000\000\003\157\003\157\003\157\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003\157\000\000\000\000\000\000\000\000\000\000\003\157\003\157\014\146\014\170\003\157\000\000\000\000\003\157\000\000\000\000\000\000\000\000\003\157\000\000\014\194\003\157\000\000\000\000\000\000\000\000\003\157\003\157\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\157\003\157\r\178\0142\014\218\014\242\015\"\003\157\003\157\000\000\000\000\003\157\000\000\003\157\015:\000\000\000\000\000\000\000\000\000\000\000\000\003\157\003\157\015R\000\000\003\157\003\157\003\157\000\000\003\157\000\000\000\000\000\000\003\157\000\000\003\157\003\157\000\000\015\178\003\157\015\234\015\n\003\157\003\157\000\000\000\000\003\157\015j\003\157\000\000\000\000\000\000\000\000\003\157\003\157\015\130\015\154\003\145\003\145\000\000\000\000\000\000\003\145\000\000\000\000\003\145\000\000\000\000\003\145\000\000\003\145\000\000\000\000\003\145\000\000\003\145\003\145\003\145\000\000\003\145\003\145\003\145\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\145\000\000\003\145\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\145\000\000\000\000\003\145\000\000\000\000\000\000\000\000\003\145\000\000\003\145\003\145\000\000\000\000\000\000\000\000\003\145\003\145\003\145\000\000\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\145\003\145\003\145\003\145\003\145\000\000\000\000\003\145\000\000\003\145\003\145\000\000\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\145\000\000\003\145\003\145\003\145\000\000\003\145\000\000\000\000\000\000\003\145\000\000\003\145\003\145\000\000\012j\003\145\003\145\003\145\003\145\003\145\000\000\000\000\003\145\003\145\rv\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\141\003\141\000\000\000\000\000\000\003\141\000\000\000\000\003\141\000\000\000\000\003\141\000\000\003\141\000\000\000\000\r\154\000\000\003\141\003\141\003\141\000\000\003\141\003\141\003\141\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003\141\000\000\000\000\000\000\000\000\000\000\003\141\003\141\014\146\014\170\003\141\000\000\000\000\003\141\000\000\000\000\000\000\000\000\003\141\000\000\014\194\003\141\000\000\000\000\000\000\000\000\003\141\003\141\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\r\178\0142\014\218\014\242\015\"\003\141\003\141\000\000\000\000\003\141\000\000\003\141\015:\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\015R\000\000\003\141\003\141\003\141\000\000\003\141\000\000\000\000\000\000\003\141\000\000\003\141\003\141\000\000\015\178\003\141\015\234\015\n\003\141\003\141\000\000\000\000\003\141\015j\003\141\000\000\000\000\000\000\000\000\003\141\003\141\015\130\015\154\003i\003i\000\000\000\000\000\000\003i\000\000\000\000\003i\000\000\000\000\003i\000\000\003i\000\000\000\000\003i\000\000\003i\003i\003i\000\000\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003i\000\000\003i\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003i\000\000\000\000\003i\000\000\000\000\000\000\000\000\003i\000\000\003i\003i\000\000\000\000\000\000\000\000\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003i\003i\003i\003i\003i\000\000\000\000\003i\000\000\003i\003i\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\000\000\003i\003i\003i\000\000\003i\000\000\000\000\000\000\003i\000\000\003i\003i\000\000\012j\003i\003i\003i\003i\003i\000\000\000\000\003i\003i\rv\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003e\003e\000\000\000\000\000\000\003e\000\000\000\000\003e\000\000\000\000\003e\000\000\003e\000\000\000\000\r\154\000\000\003e\003e\003e\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003e\000\000\000\000\000\000\000\000\000\000\003e\003e\014\146\014\170\003e\000\000\000\000\003e\000\000\000\000\000\000\000\000\003e\000\000\014\194\003e\000\000\000\000\000\000\000\000\003e\003e\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\r\178\0142\014\218\014\242\015\"\003e\003e\000\000\000\000\003e\000\000\003e\015:\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\015R\000\000\003e\003e\003e\000\000\003e\000\000\000\000\000\000\003e\000\000\003e\003e\000\000\015\178\003e\015\234\015\n\003e\003e\000\000\000\000\003e\015j\003e\000\000\000\000\000\000\000\000\003e\003e\015\130\015\154\003y\003y\000\000\000\000\000\000\003y\000\000\000\000\003y\000\000\000\000\003y\000\000\003y\000\000\000\000\003y\000\000\003y\003y\003y\000\000\003y\003y\003y\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003y\000\000\003y\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003y\000\000\000\000\003y\000\000\000\000\000\000\000\000\003y\000\000\003y\003y\000\000\000\000\000\000\000\000\003y\003y\003y\000\000\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003y\003y\003y\003y\003y\000\000\000\000\003y\000\000\003y\003y\000\000\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\000\000\003y\003y\003y\000\000\003y\000\000\000\000\000\000\003y\000\000\003y\003y\000\000\012j\003y\003y\003y\003y\003y\000\000\000\000\003y\003y\rv\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003u\003u\000\000\000\000\000\000\003u\000\000\000\000\003u\000\000\000\000\003u\000\000\003u\000\000\000\000\r\154\000\000\003u\003u\003u\000\000\003u\003u\003u\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003u\000\000\000\000\000\000\000\000\000\000\003u\003u\014\146\014\170\003u\000\000\000\000\003u\000\000\000\000\000\000\000\000\003u\000\000\014\194\003u\000\000\000\000\000\000\000\000\003u\003u\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\r\178\0142\014\218\014\242\015\"\003u\003u\000\000\000\000\003u\000\000\003u\015:\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\015R\000\000\003u\003u\003u\000\000\003u\000\000\000\000\000\000\003u\000\000\003u\003u\000\000\015\178\003u\015\234\015\n\003u\003u\000\000\000\000\003u\015j\003u\000\000\000\000\000\000\000\000\003u\003u\015\130\015\154\003q\003q\000\000\000\000\000\000\003q\000\000\000\000\003q\000\000\000\000\003q\000\000\003q\000\000\000\000\003q\000\000\003q\003q\003q\000\000\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003q\000\000\003q\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003q\000\000\000\000\003q\000\000\000\000\000\000\000\000\003q\000\000\003q\003q\000\000\000\000\000\000\000\000\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003q\003q\003q\003q\003q\000\000\000\000\003q\000\000\003q\003q\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\000\000\003q\003q\003q\000\000\003q\000\000\000\000\000\000\003q\000\000\003q\003q\000\000\012j\003q\003q\003q\003q\003q\000\000\000\000\003q\003q\rv\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003m\003m\000\000\000\000\000\000\003m\000\000\000\000\003m\000\000\000\000\003m\000\000\003m\000\000\000\000\r\154\000\000\003m\003m\003m\000\000\003m\003m\003m\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003m\000\000\000\000\000\000\000\000\000\000\003m\003m\014\146\014\170\003m\000\000\000\000\003m\000\000\000\000\000\000\000\000\003m\000\000\014\194\003m\000\000\000\000\000\000\000\000\003m\003m\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\r\178\0142\014\218\014\242\015\"\003m\003m\000\000\000\000\003m\000\000\003m\015:\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\015R\000\000\003m\003m\003m\000\000\003m\000\000\000\000\000\000\003m\000\000\003m\003m\000\000\015\178\003m\015\234\015\n\003m\003m\000\000\000\000\003m\015j\003m\000\000\000\000\000\000\000\000\003m\003m\015\130\015\154\003\137\003\137\000\000\000\000\000\000\003\137\000\000\000\000\003\137\000\000\000\000\003\137\000\000\003\137\000\000\000\000\003\137\000\000\003\137\003\137\003\137\000\000\003\137\003\137\003\137\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\137\000\000\003\137\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\137\000\000\000\000\003\137\000\000\000\000\000\000\000\000\003\137\000\000\003\137\003\137\000\000\000\000\000\000\000\000\003\137\003\137\003\137\000\000\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\137\003\137\003\137\003\137\003\137\000\000\000\000\003\137\000\000\003\137\003\137\000\000\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\000\000\003\137\003\137\003\137\000\000\003\137\000\000\000\000\000\000\003\137\000\000\003\137\003\137\000\000\012j\003\137\003\137\003\137\003\137\003\137\000\000\000\000\003\137\003\137\rv\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\133\003\133\000\000\000\000\000\000\003\133\000\000\000\000\003\133\000\000\000\000\003\133\000\000\003\133\000\000\000\000\r\154\000\000\003\133\003\133\003\133\000\000\003\133\003\133\003\133\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003\133\000\000\000\000\000\000\000\000\000\000\003\133\003\133\014\146\014\170\003\133\000\000\000\000\003\133\000\000\000\000\000\000\000\000\003\133\000\000\014\194\003\133\000\000\000\000\000\000\000\000\003\133\003\133\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\r\178\0142\014\218\014\242\015\"\003\133\003\133\000\000\000\000\003\133\000\000\003\133\015:\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\015R\000\000\003\133\003\133\003\133\000\000\003\133\000\000\000\000\000\000\003\133\000\000\003\133\003\133\000\000\015\178\003\133\015\234\015\n\003\133\003\133\000\000\000\000\003\133\015j\003\133\000\000\000\000\000\000\000\000\003\133\003\133\015\130\015\154\003\169\003\169\000\000\000\000\000\000\003\169\000\000\000\000\003\169\000\000\000\000\003\169\000\000\003\169\000\000\000\000\003\169\000\000\003\169\003\169\003\169\000\000\003\169\003\169\003\169\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\169\000\000\003\169\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\169\000\000\000\000\003\169\000\000\000\000\000\000\000\000\003\169\000\000\003\169\003\169\000\000\000\000\000\000\000\000\003\169\003\169\003\169\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\169\003\169\003\169\003\169\003\169\000\000\000\000\003\169\000\000\003\169\003\169\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\000\000\003\169\003\169\003\169\000\000\003\169\000\000\000\000\000\000\003\169\000\000\003\169\003\169\000\000\012j\003\169\003\169\003\169\003\169\003\169\000\000\000\000\003\169\003\169\rv\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\165\003\165\000\000\000\000\000\000\003\165\000\000\000\000\003\165\000\000\000\000\003\165\000\000\003\165\000\000\000\000\r\154\000\000\003\165\003\165\003\165\000\000\003\165\003\165\003\165\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003\165\000\000\000\000\000\000\000\000\000\000\003\165\003\165\014\146\014\170\003\165\000\000\000\000\003\165\000\000\000\000\000\000\000\000\003\165\000\000\014\194\003\165\000\000\000\000\000\000\000\000\003\165\003\165\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\r\178\0142\014\218\014\242\015\"\003\165\003\165\000\000\000\000\003\165\000\000\003\165\015:\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\015R\000\000\003\165\003\165\003\165\000\000\003\165\000\000\000\000\000\000\003\165\000\000\003\165\003\165\000\000\015\178\003\165\015\234\015\n\003\165\003\165\000\000\000\000\003\165\015j\003\165\000\000\000\000\000\000\000\000\003\165\003\165\015\130\015\154\003\153\003\153\000\000\000\000\000\000\003\153\000\000\000\000\003\153\000\000\000\000\003\153\000\000\003\153\000\000\000\000\003\153\000\000\003\153\003\153\003\153\000\000\003\153\003\153\003\153\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\153\000\000\003\153\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\153\000\000\000\000\003\153\000\000\000\000\000\000\000\000\003\153\000\000\003\153\003\153\000\000\000\000\000\000\000\000\003\153\003\153\003\153\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\153\003\153\003\153\003\153\003\153\000\000\000\000\003\153\000\000\003\153\003\153\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\000\000\003\153\003\153\003\153\000\000\003\153\000\000\000\000\000\000\003\153\000\000\003\153\003\153\000\000\012j\003\153\003\153\003\153\003\153\003\153\000\000\000\000\003\153\003\153\rv\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\149\003\149\000\000\000\000\000\000\003\149\000\000\000\000\003\149\000\000\000\000\003\149\000\000\003\149\000\000\000\000\r\154\000\000\003\149\003\149\003\149\000\000\003\149\003\149\003\149\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003\149\000\000\000\000\000\000\000\000\000\000\003\149\003\149\014\146\014\170\003\149\000\000\000\000\003\149\000\000\000\000\000\000\000\000\003\149\000\000\014\194\003\149\000\000\000\000\000\000\000\000\003\149\003\149\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\149\r\178\0142\014\218\014\242\015\"\003\149\003\149\000\000\000\000\003\149\000\000\003\149\015:\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\149\015R\000\000\003\149\003\149\003\149\000\000\003\149\000\000\000\000\000\000\003\149\000\000\003\149\003\149\000\000\015\178\003\149\015\234\015\n\003\149\003\149\000\000\000\000\003\149\015j\003\149\000\000\000\000\000\000\000\000\003\149\003\149\015\130\015\154\003a\003a\000\000\000\000\000\000\003a\000\000\000\000\003a\000\000\000\000\003a\000\000\003a\000\000\000\000\003a\000\000\003a\003a\003a\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003a\000\000\003a\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003a\000\000\000\000\003a\000\000\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\000\000\000\000\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003a\003a\003a\003a\003a\000\000\000\000\003a\000\000\003a\003a\000\000\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\000\000\003a\003a\003a\000\000\003a\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\012j\003a\003a\003a\003a\003a\000\000\000\000\003a\003a\rv\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003]\003]\000\000\000\000\000\000\003]\000\000\000\000\003]\000\000\000\000\003]\000\000\003]\000\000\000\000\r\154\000\000\003]\003]\003]\000\000\003]\003]\003]\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003]\000\000\000\000\000\000\000\000\000\000\003]\003]\014\146\014\170\003]\000\000\000\000\003]\000\000\000\000\000\000\000\000\003]\000\000\014\194\003]\000\000\000\000\000\000\000\000\003]\003]\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003]\003]\r\178\0142\014\218\014\242\015\"\003]\003]\000\000\000\000\003]\000\000\003]\015:\000\000\000\000\000\000\000\000\000\000\000\000\003]\003]\015R\000\000\003]\003]\003]\000\000\003]\000\000\000\000\000\000\003]\000\000\003]\003]\000\000\015\178\003]\015\234\015\n\003]\003]\000\000\000\000\003]\015j\003]\000\000\000\000\000\000\000\000\003]\003]\015\130\015\154\na\na\000\000\000\000\000\000\na\000\000\000\000\na\000\000\000\000\na\000\000\na\000\000\000\000\na\000\000\na\na\na\000\000\na\na\na\000\000\000\000\000\000\000\000\000\000\na\na\na\na\na\000\000\na\000\000\000\000\000\000\000\000\000\000\na\na\na\na\na\000\000\000\000\na\000\000\000\000\000\000\000\000\na\000\000\na\na\000\000\000\000\000\000\000\000\na\na\na\000\000\000\000\000\000\000\000\000\000\000\000\na\na\na\na\na\na\na\na\na\000\000\000\000\na\000\000\na\na\000\000\000\000\000\000\000\000\000\000\000\000\na\na\na\000\000\na\na\na\000\000\na\000\000\000\000\000\000\na\000\000\na\na\000\000\012j\na\na\na\na\na\000\000\000\000\na\na\rv\000\000\000\000\000\000\000\000\na\na\na\na\n]\n]\000\000\000\000\000\000\n]\000\000\000\000\n]\000\000\000\000\n]\000\000\n]\000\000\000\000\r\154\000\000\n]\n]\n]\000\000\n]\n]\n]\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\n]\000\000\000\000\000\000\000\000\000\000\n]\n]\014\146\014\170\n]\000\000\000\000\n]\000\000\000\000\000\000\000\000\n]\000\000\014\194\n]\000\000\000\000\000\000\000\000\n]\n]\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n]\n]\r\178\0142\014\218\014\242\015\"\n]\n]\000\000\000\000\n]\000\000\n]\015:\000\000\000\000\000\000\000\000\000\000\000\000\n]\n]\015R\000\000\n]\n]\n]\000\000\n]\000\000\000\000\000\000\n]\000\000\n]\n]\000\000\n]\n]\n]\015\n\n]\n]\000\000\000\000\n]\015j\n]\000\000\000\000\000\000\000\000\n]\n]\015\130\015\154\011\169\011\169\000\000\000\000\000\000\011\169\000\000\000\000\011\169\000\000\000\000\011\169\000\000\011\169\000\000\000\000\011\169\000\000\011\169\011\169\011\169\000\000\011\169\011\169\011\169\000\000\000\000\000\000\000\000\000\000\011\169\011\169\011\169\011\169\011\169\000\000\011\169\000\000\000\000\000\000\000\000\000\000\011\169\011\169\011\169\011\169\011\169\000\000\000\000\011\169\000\000\000\000\000\000\000\000\011\169\000\000\011\169\011\169\000\000\000\000\000\000\000\000\011\169\011\169\011\169\000\000\000\000\000\000\000\000\000\000\000\000\011\169\011\169\011\169\011\169\011\169\011\169\011\169\011\169\011\169\000\000\000\000\011\169\000\000\011\169\011\169\000\000\000\000\000\000\000\000\000\000\000\000\011\169\011\169\011\169\000\000\011\169\011\169\011\169\000\000\011\169\000\000\000\000\000\000\011\169\000\000\011\169\011\169\000\000\012j\011\169\011\169\011\169\011\169\011\169\000\000\000\000\011\169\011\169\rv\000\000\000\000\000\000\000\000\011\169\011\169\011\169\011\169\002i\002i\000\000\000\000\000\000\002i\000\000\000\000\002i\000\000\000\000\002i\000\000\002i\000\000\000\000\002i\000\000\002i\002i\002i\000\000\002i\002i\002i\000\000\000\000\000\000\000\000\000\000\002i\002i\002i\002i\002i\000\000\002i\000\000\000\000\000\000\000\000\000\000\002i\002i\002i\002i\002i\000\000\000\000\002i\000\000\000\000\000\000\000\000\002i\000\000\002i\002i\000\000\000\000\000\000\000\000\002i\002i\002i\000\000\000\000\000\000\000\000\000\000\000\000\002i\002i\002i\002i\002i\002i\002i\002i\002i\000\000\000\000\002i\000\000\002i\002i\000\000\000\000\000\000\000\000\000\000\000\000\002i\002i\002i\000\000\002i\002i\019r\000\000\002i\000\000\000\000\000\000\002i\000\000\002i\002i\000\000\012j\002i\002i\002i\002i\002i\000\000\000\000\002i\002i\rv\000\000\000\000\000\000\000\000\002i\002i\002i\002i\002a\002a\000\000\000\000\000\000\002a\000\000\000\000\002a\000\000\000\000\002a\000\000\002a\000\000\000\000\002a\000\000\002a\002a\002a\000\000\002a\002a\002a\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\000\000\002a\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\000\000\000\000\002a\000\000\000\000\000\000\000\000\002a\000\000\002a\002a\000\000\000\000\000\000\000\000\002a\002a\002a\000\000\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002a\002a\002a\002a\002a\000\000\000\000\002a\000\000\002a\002a\000\000\000\000\000\000\000\000\000\000\000\000\002a\002a\002a\000\000\002a\002a\002a\000\000\002a\000\000\000\000\000\000\002a\000\000\002a\002a\000\000\012j\002a\002a\002a\002a\002a\000\000\000\000\002a\002a\rv\000\000\000\000\000\000\000\000\002a\002a\002a\002a\002]\002]\000\000\000\000\000\000\002]\000\000\000\000\002]\000\000\000\000\002]\000\000\002]\000\000\000\000\r\154\000\000\002]\002]\002]\000\000\002]\002]\002]\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\002]\000\000\000\000\000\000\000\000\000\000\002]\002]\014\146\014\170\002]\000\000\000\000\002]\000\000\000\000\000\000\000\000\002]\000\000\014\194\002]\000\000\000\000\000\000\000\000\002]\002]\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002]\002]\r\178\0142\014\218\014\242\015\"\002]\002]\000\000\000\000\002]\000\000\002]\015:\000\000\000\000\000\000\000\000\000\000\000\000\002]\002]\015R\000\000\002]\002]\002]\000\000\002]\000\000\000\000\000\000\002]\000\000\002]\002]\000\000\015\178\002]\015\234\015\n\002]\002]\000\000\000\000\002]\015j\002]\000\000\000\000\000\000\000\000\002]\002]\015\130\015\154\002e\002e\000\000\000\000\000\000\002e\000\000\000\000\002e\000\000\000\000\002e\000\000\002e\000\000\000\000\r\154\000\000\002e\002e\002e\000\000\002e\002e\002e\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\002e\000\000\000\000\000\000\000\000\000\000\002e\002e\014\146\014\170\002e\000\000\000\000\002e\000\000\000\000\000\000\000\000\002e\000\000\014\194\002e\000\000\000\000\000\000\000\000\002e\002e\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002e\002e\r\178\0142\014\218\014\242\015\"\002e\002e\000\000\000\000\002e\000\000\002e\015:\000\000\000\000\000\000\000\000\000\000\000\000\002e\002e\015R\000\000\002e\002e\019\142\000\000\002e\000\000\000\000\000\000\002e\000\000\002e\002e\000\000\015\178\002e\015\234\015\n\002e\002e\000\000\000\000\002e\015j\002e\000\000\000\000\000\000\000\000\002e\002e\015\130\015\154\002Y\002Y\000\000\000\000\000\000\002Y\000\000\000\000\002Y\000\000\000\000\002Y\000\000\002Y\000\000\000\000\002Y\000\000\002Y\002Y\002Y\000\000\002Y\002Y\002Y\000\000\000\000\000\000\000\000\000\000\002Y\002Y\002Y\002Y\002Y\000\000\002Y\000\000\000\000\000\000\000\000\000\000\002Y\002Y\002Y\002Y\002Y\000\000\000\000\002Y\000\000\000\000\000\000\000\000\002Y\000\000\002Y\002Y\000\000\000\000\000\000\000\000\002Y\002Y\002Y\000\000\000\000\000\000\000\000\000\000\000\000\002Y\002Y\002Y\002Y\002Y\002Y\002Y\002Y\002Y\000\000\000\000\002Y\000\000\002Y\002Y\000\000\000\000\000\000\000\000\000\000\000\000\002Y\002Y\002Y\000\000\002Y\002Y\002Y\000\000\002Y\000\000\000\000\000\000\002Y\000\000\002Y\002Y\000\000\012j\002Y\002Y\002Y\002Y\002Y\000\000\000\000\002Y\002Y\rv\000\000\000\000\000\000\000\000\002Y\002Y\002Y\002Y\002U\002U\000\000\000\000\000\000\002U\000\000\000\000\002U\000\000\000\000\002U\000\000\002U\000\000\000\000\r\154\000\000\002U\002U\002U\000\000\002U\002U\002U\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\002U\000\000\000\000\000\000\000\000\000\000\002U\002U\014\146\014\170\002U\000\000\000\000\002U\000\000\000\000\000\000\000\000\002U\000\000\014\194\002U\000\000\000\000\000\000\000\000\002U\002U\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002U\002U\r\178\0142\014\218\014\242\015\"\002U\002U\000\000\000\000\002U\000\000\002U\015:\000\000\000\000\000\000\000\000\000\000\000\000\002U\002U\015R\000\000\002U\002U\002U\000\000\002U\000\000\000\000\000\000\002U\000\000\002U\002U\000\000\015\178\002U\015\234\015\n\002U\002U\000\000\000\000\002U\015j\002U\000\000\000\000\000\000\000\000\002U\002U\015\130\015\154\nu\nu\000\000\000\000\000\000\nu\000\000\000\000\nu\000\000\000\000\nu\000\000\nu\000\000\000\000\nu\000\000\nu\nu\nu\000\000\nu\nu\nu\000\000\000\000\000\000\000\000\000\000\nu\nu\nu\nu\nu\000\000\nu\000\000\000\000\000\000\000\000\000\000\nu\nu\nu\nu\nu\000\000\000\000\nu\000\000\000\000\000\000\000\000\nu\000\000\nu\nu\000\000\000\000\000\000\000\000\nu\nu\nu\000\000\000\000\000\000\000\000\000\000\000\000\nu\nu\nu\nu\nu\nu\nu\nu\nu\000\000\000\000\nu\000\000\nu\nu\000\000\000\000\000\000\000\000\000\000\000\000\nu\nu\nu\000\000\nu\nu\nu\000\000\nu\000\000\000\000\000\000\nu\000\000\nu\nu\000\000\012j\nu\nu\nu\nu\nu\000\000\000\000\nu\nu\rv\000\000\000\000\000\000\000\000\nu\nu\nu\nu\nq\nq\000\000\000\000\000\000\nq\000\000\000\000\nq\000\000\000\000\nq\000\000\nq\000\000\000\000\r\154\000\000\nq\nq\nq\000\000\nq\nq\nq\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\nq\000\000\000\000\000\000\000\000\000\000\nq\nq\014\146\014\170\nq\000\000\000\000\nq\000\000\000\000\000\000\000\000\nq\000\000\014\194\nq\000\000\000\000\000\000\000\000\nq\nq\000\242\000\000\000\000\000\000\000\000\000\000\000\000\nq\nq\r\178\0142\014\218\014\242\015\"\nq\nq\000\000\000\000\nq\000\000\nq\015:\000\000\000\000\000\000\000\000\000\000\000\000\nq\nq\015R\000\000\nq\nq\nq\000\000\nq\000\000\000\000\000\000\nq\000\000\nq\nq\000\000\nq\nq\nq\015\n\nq\nq\000\000\000\000\nq\015j\nq\000\000\000\000\000\000\000\000\nq\nq\015\130\015\154\003Y\003Y\000\000\000\000\000\000\003Y\000\000\000\000\003Y\000\000\000\000\003Y\000\000\003Y\000\000\000\000\003Y\000\000\003Y\003Y\003Y\000\000\003Y\003Y\003Y\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003Y\000\000\003Y\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003Y\000\000\000\000\003Y\000\000\000\000\000\000\000\000\003Y\000\000\003Y\003Y\000\000\000\000\000\000\000\000\003Y\003Y\003Y\000\000\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003Y\003Y\003Y\003Y\003Y\000\000\000\000\003Y\000\000\003Y\003Y\000\000\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\000\000\003Y\003Y\003Y\000\000\003Y\000\000\000\000\000\000\003Y\000\000\003Y\003Y\000\000\012j\003Y\003Y\003Y\003Y\003Y\000\000\000\000\003Y\003Y\rv\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003U\003U\000\000\000\000\000\000\003U\000\000\000\000\003U\000\000\000\000\003U\000\000\003U\000\000\000\000\r\154\000\000\003U\003U\003U\000\000\003U\003U\003U\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\003U\000\000\000\000\000\000\000\000\000\000\003U\003U\014\146\014\170\003U\000\000\000\000\003U\000\000\000\000\000\000\000\000\003U\000\000\014\194\003U\000\000\000\000\000\000\000\000\003U\003U\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003U\003U\r\178\0142\014\218\014\242\015\"\003U\003U\000\000\000\000\003U\000\000\003U\015:\000\000\000\000\000\000\000\000\000\000\000\000\003U\003U\015R\000\000\003U\003U\003U\000\000\003U\000\000\000\000\000\000\003U\000\000\003U\003U\000\000\015\178\003U\015\234\015\n\003U\003U\000\000\000\000\003U\015j\003U\000\000\000\000\000\000\000\000\003U\003U\015\130\015\154\002I\002I\000\000\000\000\000\000\002I\000\000\000\000\002I\000\000\000\000\002I\000\000\002I\000\000\000\000\002I\000\000\002I\002I\002I\000\000\002I\002I\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\000\000\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\000\000\000\000\002I\000\000\000\000\000\000\000\000\002I\000\000\002I\002I\000\000\000\000\000\000\000\000\002I\002I\002I\000\000\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\002I\002I\002I\002I\000\000\000\000\002I\000\000\002I\002I\000\000\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\000\000\002I\002I\002I\000\000\002I\000\000\000\000\000\000\002I\000\000\002I\002I\000\000\002I\002I\002I\002I\002I\002I\000\000\000\000\002I\002I\rv\000\000\000\000\000\000\000\000\002I\002I\002I\002I\n\157\n\157\000\000\000\000\000\000\n\157\000\000\000\000\n\157\000\000\000\000\n\157\000\000\n\157\000\000\000\000\n\157\000\000\n\157\n\157\n\157\000\000\n\157\n\157\n\157\000\000\000\000\000\000\000\000\000\000\n\157\n\157\n\157\n\157\n\157\000\000\n\157\000\000\000\000\000\000\000\000\000\000\n\157\n\157\n\157\n\157\n\157\000\000\000\000\n\157\000\000\000\000\000\000\000\000\n\157\000\000\n\157\n\157\000\000\000\000\000\000\000\000\n\157\n\157\n\157\000\000\000\000\000\000\000\000\000\000\000\000\n\157\n\157\n\157\n\157\n\157\n\157\n\157\n\157\n\157\000\000\000\000\n\157\000\000\n\157\n\157\000\000\000\000\000\000\000\000\000\000\000\000\n\157\n\157\n\157\000\000\n\157\n\157\n\157\000\000\n\157\000\000\000\000\000\000\n\157\000\000\n\157\n\157\000\000\012j\n\157\n\157\n\157\n\157\n\157\000\000\000\000\n\157\n\157\rv\000\000\000\000\000\000\000\000\n\157\n\157\n\157\n\157\n\153\n\153\000\000\000\000\000\000\n\153\000\000\000\000\n\153\000\000\000\000\n\153\000\000\n\153\000\000\000\000\r\154\000\000\n\153\n\153\n\153\000\000\n\153\n\153\n\153\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\n\153\000\000\000\000\000\000\000\000\000\000\n\153\n\153\014\146\014\170\n\153\000\000\000\000\n\153\000\000\000\000\000\000\000\000\n\153\000\000\014\194\n\153\000\000\000\000\000\000\000\000\n\153\n\153\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\153\n\153\r\178\0142\014\218\014\242\015\"\n\153\n\153\000\000\000\000\n\153\000\000\n\153\015:\000\000\000\000\000\000\000\000\000\000\000\000\n\153\n\153\015R\000\000\n\153\n\153\n\153\000\000\n\153\000\000\000\000\000\000\n\153\000\000\n\153\n\153\000\000\n\153\n\153\n\153\015\n\n\153\n\153\000\000\000\000\n\153\015j\n\153\000\000\000\000\000\000\000\000\n\153\n\153\015\130\015\154\n\137\n\137\000\000\000\000\000\000\n\137\000\000\000\000\n\137\000\000\000\000\n\137\000\000\n\137\000\000\000\000\n\137\000\000\n\137\n\137\n\137\000\000\n\137\n\137\n\137\000\000\000\000\000\000\000\000\000\000\n\137\n\137\n\137\n\137\n\137\000\000\n\137\000\000\000\000\000\000\000\000\000\000\n\137\n\137\n\137\n\137\n\137\000\000\000\000\n\137\000\000\000\000\000\000\000\000\n\137\000\000\n\137\n\137\000\000\000\000\000\000\000\000\n\137\n\137\n\137\000\000\000\000\000\000\000\000\000\000\000\000\n\137\n\137\n\137\n\137\n\137\n\137\n\137\n\137\n\137\000\000\000\000\n\137\000\000\n\137\n\137\000\000\000\000\000\000\000\000\000\000\000\000\n\137\n\137\n\137\000\000\n\137\n\137\n\137\000\000\n\137\000\000\000\000\000\000\n\137\000\000\n\137\n\137\000\000\012j\n\137\n\137\n\137\n\137\n\137\000\000\000\000\n\137\n\137\rv\000\000\000\000\000\000\000\000\n\137\n\137\n\137\n\137\n\133\n\133\000\000\000\000\000\000\n\133\000\000\000\000\n\133\000\000\000\000\n\133\000\000\n\133\000\000\000\000\r\154\000\000\n\133\n\133\n\133\000\000\n\133\n\133\n\133\000\000\000\000\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\n\133\000\000\000\000\000\000\000\000\000\000\n\133\n\133\014\146\014\170\n\133\000\000\000\000\n\133\000\000\000\000\000\000\000\000\n\133\000\000\014\194\n\133\000\000\000\000\000\000\000\000\n\133\n\133\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\133\n\133\r\178\0142\014\218\014\242\015\"\n\133\n\133\000\000\000\000\n\133\000\000\n\133\015:\000\000\000\000\000\000\000\000\000\000\000\000\n\133\n\133\015R\000\000\n\133\n\133\n\133\000\000\n\133\000\000\000\000\000\000\n\133\000\000\n\133\n\133\000\000\n\133\n\133\n\133\015\n\n\133\n\133\000\000\000\000\n\133\015j\n\133\000\000\000\000\000\000\000\000\n\133\n\133\015\130\015\154\002M\002M\000\000\000\000\000\000\002M\000\000\000\000\002M\000\000\000\000\002M\000\000\002M\000\000\000\000\002M\000\000\002M\002M\002M\000\000\002M\002M\002M\000\000\000\000\000\000\000\000\000\000\002M\002M\002M\002M\002M\000\000\002M\000\000\004!\004!\000\000\000\000\002M\002M\002M\002M\002M\000\000\000\000\002M\000\000\000\000\000\000\000\000\002M\000\000\002M\002M\004!\000\000\015A\000\000\002M\002M\002M\000\000\000\000\000\000\011q\000\000\000\000\002M\002M\002M\002M\002M\002M\002M\002M\002M\015A\004!\002M\0022\002M\002M\0026\r6\011q\006\137\011q\011q\002M\002M\002M\000\000\002M\002M\002M\002B\002M\000\000\004!\000\000\002M\001\210\002M\002M\000\000\002M\002M\002M\002M\002M\002M\000\000\000\000\002M\002M\rv\000\000\000\000\000\000\001\214\002M\002M\002M\002M\001\n\002N\000\006\000\000\000\000\000\000\002\198\002\202\025\150\002\246\002\150\000\000\003\002\006\137\000\000\004\218\001\014\000\000\000\000\000\000\002\162\000\000\002\174\007\029\026\014\001\214\000\000\000\000\002\190\006\006\001\022\011f\011j\001\"\001&\026&\000\000\000\000\004\226\000\000\005\186\000\000\022~\000\000\011\142\011\146\002R\005\238\005\242\012j\005\246\006\002\006\014\011\150\t\166\000\000\001>\011q\002\190\rv\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\011\194\001V\000\000\000\000\000\000\001Z\000\000\011\206\011\230\012\158\006\158\006\162\000\000\000\000\001^\000\000\000\000\000\000\000\000\002\001\000\000\001b\000\000\025j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\158\007\190\000\000\007\202\006\166\011*\000\000\001\162\000\000\020&\003j\012\178\001\n\001\170\000\006\001\174\001\178\000\n\002\198\002\202\000\000\002\246\002\150\007\206\003\002\000\000\000\000\004\218\001\014\000\000\000\000\000\000\011b\000\000\000\000\000\000\002\001\001\214\000\000\000\000\000\000\006\006\001\022\011f\011j\001\"\001&\000\000\002\001\002\001\004\226\000\000\005\186\000\000\011n\000\000\011\142\011\146\000\000\005\238\005\242\000\000\005\246\006\002\006\014\011\150\t\166\000\242\001>\000\000\002\190\b\189\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\001B\001F\001J\001N\001R\b\189\000\000\011\194\001V\b\189\000\000\000\000\001Z\000\000\011\206\011\230\012\158\006\158\006\162\t\205\000\000\001^\000\000\t\205\000\000\000\000\000\000\007\210\001b\000\000\007\142\b\006\005}\000\000\000\000\000\000\000\000\b\026\001\158\bB\000\000\b&\006\166\011*\000\000\001\162\000\000\020&\003j\012\178\005\241\001\170\000\006\001\174\001\178\000\250\002\198\002\202\002\206\002\246\002\150\000\000\003\002\000\000\t\205\004\218\000\000\000\000\005\134\000\000\000\000\000\000\005\241\000\000\005\138\001\214\000\242\023\206\000\000\004\222\b\189\005\142\005\146\000\000\000\000\t\205\005\150\000\000\004\226\000\000\005\186\000\000\023b\000\000\005\230\005\234\003\014\005\238\005\242\004\162\005\246\006\002\006\014\006\022\t\166\000\249\005}\023\198\002\190\000\000\000\249\006\n\023\222\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\007\210\000\000\003\254\007\142\012\002\000\000\000\000\023\230\000\249\011\194\b\026\000\000\000\000\015\t\b&\000\000\011\206\011\230\012\158\006\158\006\162\023\250\0246\000\000\000\000\005\241\005\241\000\000\000\000\000\000\000\249\000\000\015\t\015\t\000\000\025\158\015\t\000\000\000\000\000\000\000\000\000\249\024r\028v\006\166\011*\000\249\000\145\000\000\011B\003j\012\178\000\145\000\000\002\202\000\145\000\249\002\150\000\000\012\238\000\000\000\000\004\218\000\000\000\000\000\145\000\000\000\145\000\000\000\145\000\000\000\145\001\214\000\000\r\006\t\201\004\222\000\242\000\000\t\201\000\000\000\249\r\014\000\145\000\000\004\226\000\000\005\186\000\000\000\145\000\000\000\249\000\000\000\145\005\238\005\242\000\000\000\000\006\002\001\194\000\000\000\145\000\000\000\000\000\145\002\190\000\000\015\t\006\n\000\145\000\145\000\145\011\018\011\022\011\"\000\000\r\022\006\146\000\145\000\145\t\201\000\000\000\000\004\174\000\000\000\145\000\000\000\000\000\000\000\145\011\141\000\000\000\000\000\000\000\000\000\000\000\000\006\158\006\162\000\145\000\145\t\201\000\000\000\145\000\145\000\000\000\000\000\000\000\000\bn \014\000\000\011\141\005\221\000\145\bN\000\000\000\000\005\221\000\000\000\145\000\145\006\166\011*\000\000\000\000\000\169\011B\003j\000\000\000\145\000\169\000\145\002\202\000\169\bR\002\150\005\221\012\238\003\254\000\000\004\218\000\000\000\000\000\169\000\000\000\169\000\000\000\169\000\000\000\169\001\214\000\000\r\006\000\242\004\222\000\000\000\000\000\000\005\221\000\000\r\014\000\169\000\000\004\226\000\000\005\186\000\000\000\169\000\000\005\221\000\000\000\169\005\238\005\242\005\221\002\238\006\002\001\194\000\242\000\169\000\000\000\000\000\169\002\190\005\221\000\000\006\n\000\169\000\169\000\169\011\018\011\022\011\"\000\000\r\022\006\146\000\169\000\169\007\210\000\000\000\000\007\142 \018\000\169\000\000\000\000\011\141\000\169\b\026\005\221\000\000\000\000\b&\000\000\000\000\006\158\006\162\000\169\000\169\005\221\000\000\000\169\000\169\007\210\000\000\000\000\007\142\011\029\000\000\000\000\000\000\000\000\000\169\b\026\000\000\000\000\000\000\b&\000\169\000\169\006\166\011*\000\000\000\000\011\025\011B\003j\000\000\000\169\000\006\000\169\000\000\000\250\002\198\002\202\002\206\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\006\017\000\000\000\000\000\000\011\029\000\000\005\138\001\214\000\000\000\000\000\000\004\222\000\000\005\142\005\146\000\000\000\000\000\000\005\150\000\000\004\226\011\025\005\186\000\000\023b\011\029\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\023\198\002\190\000\000\011\025\006\n\023\222\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\011\029\023\230\015A\011\194\003\254#^\000\000\011\029\000\000\000\000\011\206\011\230\012\158\006\158\006\162\023\250\0246\011\025\000\000#\127\020\182\003\254\015A\000\000\011\025\0022\000\000\000\000\0026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\028v\006\166\011*\000\000\002B\000\000\011B\003j\012\178\000\006\002J\015-\000\250\002\198\002\202\002\206\002\246\002\150\000\000\003\002\000\000\000\000\004\218\021r\000\000#\174\002\150\000\000\000\000\000\000\000\000\005\138\001\214\000\000\002N\000\000\004\222\000\000\005\142\005\146\000\000\000\000\000\000\005\150\028\030\004\226\000\000\005\186\000\000\023b\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\023\198\002\190\000\000\021v\006\n\023\222\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\002R\000\000\021\130\000\000\028B\000\000\023\230\000\000\011\194\000\000#^\000\000\000\000\000\000\000\000\011\206\011\230\012\158\006\158\006\162\023\250\0246\000\000\000\000\006\025\000\000\000\000\000\000\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\028N\000\000\000\000\028v\006\166\011*\001\n\000\000\000\000\011B\003j\012\178\004\242\002\202\007\162\000\000\002\150\027\226\004\246\000\000\000\000\004\218\001\014\000\000\000\000\000\000\002\162\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\001\018\001\022\001\026\005J\001\"\001&\000\000\000\000\000\000\002\001\000\000\000\000\000\000\005N\002\001\0012\007\186\000\000\000\000\000\000\000\000\000\000\005F\001\194\001:\000\000\000\000\001>\000\000\002\190\000\000\000\000\006R\002\001\000\000\000\000\006V\000\000\006^\006\134\006\230\006\146\000\n\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\001V\006\150\000\000\002\001\001Z\000\000\000\000\000\000\002\001\006\158\006\162\000\000\007\"\001^\002\001\000\000\000\000\000\000\007.\002\001\001b\002\001\000\000\000\000\000\000\000\000\000\000\000\000\002\001\002\001\001\158\007\190\000\000\000\000\006\166\000\000\000\000\001\162\000\000\001\166\003j\001\n\000\000\001\170\000\000\001\174\001\178\004\242\002\202\012\"\000\000\002\150\000\000\004\246\002\001\000\000\004\218\001\014\000\000\000\000\000\000\002\162\000\000\000\000\002\001\000\000\001\214\000\000\000\000\000\000\001\018\001\022\001\026\005J\001\"\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005N\000\000\0012\007\186\000\000\000\000\000\000\000\000\000\000\005F\001\194\001:\000\000\000\000\001>\000\000\002\190\000\000\000\000\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\006\230\006\146\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\001V\006\150\000\000\000\000\001Z\000\000\000\000\000\000\000\000\006\158\006\162\000\000\007\"\001^\000\000\000\000\000\000\000\000\007.\011\130\001b\000\000\000\000\000\000\000\000\000\000\002\018\000\000\000\000\000\000\001\158\007\190\000\000\002\022\006\166\000\000\002\030\001\162\000\000\001\166\003j\000\000\000\000\001\170\001\214\001\174\001\178\000\014\000\018\000\022\000\026\000\030\000\000\000\"\000&\000*\000.\0002\000\000\0006\000:\005n\000\000\000>\000\000\000\000\000\000\000B\000\000\000\000\t\210\001\226\000\000\000\000\000F\000\000\000\000\002\190\000\000\000\000\000J\000\000\000N\000R\000V\000Z\000^\000b\000f\000\000\000\000\000\000\000j\000\000\000\000\000\000\000n\000\000\000r\000\000\000v\000\000\004\242\002\202\000\000\t\218\002\150\000\000\0066\000\000\000\000\004\218\000\000\000\000\000z\000\000\000\000\000~\000\130\000\000\000\000\001\214\000\000\000\000\000\134\000\138\000\142\000\000\005.\000\000\000\000\000\000\000\146\000\150\000\154\000\158\000\000\000\162\000\166\000\170\000\000\005:\000\000\000\174\000\178\000\182\000\186\005F\001\194\000\000\000\190\000\000\000\194\000\198\002\190\000\000\000\000\006R\000\000\000\000\000\202\006V\000\206\006^\006\134\b\166\006\146\005M\000\210\000\214\000\000\000\218\005M\004\242\002\202\005M\001\169\002\150\006\150\tv\000\000\001\169\004\218\000\000\000\000\005M\006\158\006\162\000\000\005M\000\000\005M\001\214\000\000\t\150\000\000\000\000\000\000\b\174\005.\001\169\000\000\011\242\005M\000\000\000\000\000\000\000\000\000\000\005M\000\000\006\166\005:\000\000\000\000\000\000\000\000\003j\012\030\001\194\000\000\005M\001\169\000\000\005M\002\190\000\000\000\000\006R\005M\005M\r=\006V\001\169\006^\000\000\012.\006\146\001\169\001\169\000\242\000\000\000\000\000\000\000\000\005M\005M\001\169\001\169\006\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\158\006\162\005M\005M\016\014\000\000\005M\005M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\169\000\000\000\000\r=\003\014\000\000\r=\016\022\005M\006\166\001\169\000\000\000\000\r=\011u\003j\000\006\r=\000\000\005M\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\011u\000\000\011u\011u\000\000\001\214\000\000\000\000\000\000\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\004\166\005\246\006\002\006\014\006\022\t\166\001\206\001\210\016\026\002\190\006\177\015\129\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\001\214\001\218\001\234\000\000\006\177\000\000\011\194\000\000\006\177\000\000\001\246\000\000\000\000\r&\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\002\166\000\000\000\000\000\000\002\178\000\000\002\190\003\022\003\"\000\000\000\000\000\000\000\000\003.\006\166\011*\011u\000\000\000\000\011B\003j\012\178\011m\000\000\000\006\000\000\000\000\000\000\002\198\002\202\0032\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\015\129\015\129\000\000\011m\000\000\011m\011m\000\000\001\214\000\000\000\000\000\000\004\222\006\177\005\142\005\146\000\000\000\000\000\000\000\000\015\129\004\226\015\129\005\186\000\000\000\000\000\000\005\230\005\234\006\177\005\238\005\242\006\177\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001.\011\194\000\000\000\000\000\000\000\000\002\001\002\001\r&\011\230\012\158\006\158\006\162\000\000\002\001\000\000\000\000\002\001\000\000\000\000\000\000\002\001\002\001\000\000\002\001\002\001\002\001\002\001\000\000\002\001\002\001\000\000\002\001\000\n\000\000\000\000\006\166\011*\011m\002\001\002\001\011B\003j\012\178\002\001\002\001\002\001\002\001\000\n\000\000\000\000\002\001\002\001\002\001\000\000\002\001\000\000\002\001\002\001\002\001\002\001\000\000\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\006\181\015\129\000\000\002\001\000\000\002\001\002\001\000\000\000\000\002\001\002\001\002\001\002\001\002\001\002\001\002\001\002\001\000\000\000\000\006\181\000\000\000\000\000\000\006\181\000\000\002\001\000\000\002\001\000\000\000\000\000\000\002\001\002\001\002\001\002\001\002\001\002\001\000\000\002\001\b1\000\000\000A\002\001\000\000\002\001\000A\000A\000\000\000A\000A\002\001\000A\000\000\000\000\000A\000\000\000\000\000\000\000\000\b1\002\001\002\001\000\000\000\000\000A\002\001\002\001\002\001\000A\000\000\000A\000A\000\000\000\000\000\000\000\000\000\000\000A\000\000\000A\000\000\015\129\015\129\000A\000A\000\000\000A\000A\000\000\000A\000A\000A\000A\000A\006\181\000\000\000\000\000A\000\000\000\000\000A\015\129\000\000\015\129\000A\000A\000A\000A\000A\000A\006\181\000\000\000\000\006\181\000\000\000\000\000\000\000\000\000\000\000A\000\000\000\000\000\000\000\000\015A\015-\000A\000A\000A\000A\000A\000\000\000\000\b-\000\000\000=\000\000\000\000\000\000\000=\000=\000\000\000=\000=\015A\000=\000\000\0022\000=\000\000\0026\000\000\000\000\b-\000A\000A\000\000\002>\000=\000A\000A\000A\000=\002B\000=\000=\000\000\000\000\000\000\002J\015-\000=\000\000\000=\000\000\000\000\000\000\000=\000=\000\000\000=\000=\000\000\000=\000=\000=\000=\000=\000\000\000\000\000\000\000=\000\000\002N\000=\000\000\000\000\000\000\000=\000=\000=\000=\000=\000=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000=\000\000\000\000\000\000\000\000\021B\000\000\000=\000=\000=\000=\000=\002\018\000\000\b=\000\000\014\201\000\000\000\000\002\022\014\201\014\201\002\030\014\201\014\201\002R\014\201\000\000\000\000\014\201\001\214\000\000\000\000\000\000\b=\000=\000=\000\000\000\000\014\201\000=\000=\000=\014\201\000\000\014\201\014\201\005n\000\000\000\000\000\000\000\000\014\201\000\000\014\201\000\000\t\210\001\226\014\201\014\201\000\000\014\201\014\201\002\190\014\201\014\201\014\201\014\201\014\201\000\000\000\000\000\000\014\201\000\000\000\000\014\201\000\000\000\000\000\000\014\201\014\201\014\201\014\201\014\201\014\201\006\001\000\000\000\000\000\000\000\000\025\174\t\218\000\000\000\000\014\201\000\000\000\000\000\000\000\000\015A\015-\014\201\014\201\014\201\014\201\014\201\000\000\000\000\b9\005\138\014\197\000\000\000\000\000\000\014\197\014\197\000\000\014\197\014\197\015A\014\197\000\000\0022\014\197\000\000\0026\000\000\000\000\b9\014\201\014\201\025\218\002\218\014\197\014\201\014\201\014\201\014\197\002B\014\197\014\197\000\000\023\198\000\000\002J\015-\014\197\023\222\014\197\000\000\000\000\000\000\014\197\014\197\000\000\014\197\014\197\026\006\014\197\014\197\014\197\014\197\014\197\000\000\000\000\000\000\014\197\000\000\002N\014\197\000\000\000\000\000\000\014\197\014\197\014\197\014\197\014\197\014\197\000\000\000\000\000\000\006\001\000\000\000\000\000\000\000\000\000\000\014\197\000\000\000\000\000\000\026j\000\000\000\000\014\197\014\197\014\197\014\197\014\197\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\002R\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\014\197\014\197\000\000\000\000\001\214\014\197\014\197\014\197\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\003\018\005\246\006\002\006\014\006\022\t\166\001\206\001\210\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\001\214\001\254\001\234\000\000\000\000\000\000\011\194\000\000\000\000\000\000\001\246\000\000\000\000\r&\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\002\166\000\000\000\000\000\000\002\178\000\000\002\190\003\022\003\"\000\000\000\000\000\000\000\000\003.\006\166\011*\022j\000\000\000\006\011B\003j\012\178\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\0032\004\218\000\000\000\000\000\000\000\000\000\000\000\000\006Z\000\000\000\000\001\214\000\000\000\000\000\000\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\004\166\005\246\006\002\006\014\006\022\t\166\001\206\001\210\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\001\214\001\254\001\234\000\000\000\000\b\177\011\194\000\000\000\000\000\000\001\246\000\000\000\000\r&\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\000\000\000\b\177\000\000\001\250\002\166\b\177\000\000\000\000\002\178\000\000\002\190\003\022\003\"\000\000\000\000\000\000\000\000\003.\006\166\011*\020:\000\000\000\006\011B\003j\012\178\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\0032\004\218\000\000\000\000\000\000\000\000\000\000\000\000\020N\000\000\000\000\001\214\000\242\000\000\002\202\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\001\214\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\028\146\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\007\210\029\206\005\198\007\142\029\210\000\000\000\000\000\000\002\190\011\194\b\026\000\000\000\000\000\000\b&\030\002\r&\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\018\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\006\129\006\129\011B\003j\012\178\006\129\006\129\006\129\006\129\000\000\006\129\000\000\006\129\006\129\006\129\006\129\006\129\000\000\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\000\000\000\000\000\000\000\000\006\129\000\000\000\000\000\000\000\000\006\129\006\129\006\129\000\000\000\000\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\000\000\000\000\006\129\000\000\006\129\000\000\006\129\006\129\006\129\006\129\000\000\000\000\006\129\006\129\006\129\006\129\006\129\006\129\000\000\000\000\000\000\006\129\006\129\006\129\006\129\000\000\000\000\006\129\006\129\000\000\006\129\000\000\006\129\000\000\006\129\006\129\000\000\006\129\006\129\006\129\000\000\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\000\000\000\000\006\129\000\000\006\129\006\129\000\000\006\129\002\170\006\129\006\129\006\129\006\129\003\202\006\129\003\234\006\129\000\000\006\129\006\129\006\129\006\129\000\000\006\129\000\000\006\129\006\129\006\129\006\129\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\004\194\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\004\222\000\000\005\142\005\146\000\000\000\000\000\000\006\t\000\000\004\226\000\000\005\186\028\158\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\005\138\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116 .\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\029\014\000\000\000\000\000\000\000\000 6\011\230\012\158\006\158\006\162\000\000\023\198\005\229\000\000\000\006\000\000\023\222\000\250\002\198\002\202\002&\002\246\002\150\000\000\003\002\029\178\029\194\004\218\000\000\000\000\024v\000\000\000\000\006\166\011*\000\000\005\138\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\024z\000\000\004\226\006\t\005\186\000\000\024\162\000\000\005\230\005\234\000\000\005\238\005\242\030\182\005\246\006\002\006\014\006\022\t\166\000\000\000\000\023\198\002\190\000\000\000\000\006\n\023\222\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025B\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\022\206\011\230\012\158\006\158\006\162\023\250\025V\000\000\000\000\000\006\005\229\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\025f\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\b\n\005\246\006\002\006\014\006\022\t\166\001\206\001\210\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\001\214\001\254\001\234\000\000\000\000\000\000\011\194\000\000\000\000\000\000\001\246\000\000\000\000\022V\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\002\166\000\000\000\000\000\000\002\178\000\000\002\190\003\022\003\"\000\000\022\150\000\000\000\000\003.\006\166\011*\000\000\002\018\000\000\011B\003j\012\178\rY\000\000\002\022\rY\000\000\002\030\rY\rY\0032\b\129\rY\000\000\rY\001\214\b\129\rY\000\000\000\000\000\000\rY\rY\000\000\rY\rY\000\000\rY\000\000\rY\000\000\000\000\005n\000\000\rY\b\129\000\000\rY\000\000\000\000\000\000\t\210\001\226\000\000\000\000\rY\000\000\rY\002\190\003j\000\000\000\000\000\000\rY\rY\000\000\000\000\b\129\000\000\000\000\rY\000\000\000\000\rY\000\000\000\000\rY\rY\b\129\rY\000\000\rY\rY\b\129\b\129\000\242\t\218\000\000\000\000\000\000\000\000\000\000\b\129\b\129\rY\000\241\000\000\000\000\000\000\000\000\000\241\000\000\rY\rY\000\000\000\000\rY\000\000\rY\000\000\000\000\000\000\000\000\000\000\006\194\000\000\000\000\000\000\b\129\000\241\000\000\rY\rY\000\000\rY\rY\000\000\rY\b\129\rY\000\000\rY\000\006\rY\000\000\rY\002\198\002\202\000\000\002\246\002\150\000\241\003\002\000\000\030\150\004\218\004\238\000\000\000\000\000\000\000\000\000\000\000\241\000\000\000\000\001\214\000\000\000\241\000\000\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\241\000\241\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\241\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\020\210\011\230\012\158\006\158\006\162\000\000\000\000\015\141\000\000\000\006\000\000\000\000\015\141\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\015\141\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\015\141\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\015\141\002\190\000\000\000\000\006\n\015\141\015\141\000\242\011\018\011\022\011\"\0116\011\170\006\146\015\141\015\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\012Z\011\230\012\158\006\158\006\162\000\000\000\000\005\221\000\000\000\006\015\141\000\000\005\221\002\198\002\202\000\000\002\246\002\150\000\000\012n\015\141\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\005\221\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\005\221\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\005\221\002\190\000\000\000\000\006\n\005\221\002\238\000\242\011\018\011\022\011\"\0116\012\134\006\146\005\221\005\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\019\"\011\230\012\158\006\158\006\162\002\001\000\000\000\000\000\000\000\006\005\221\000\000\002\001\002\198\002\202\002\001\002\246\002\150\000\000\003\002\005\221\000\000\004\218\002\001\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\n\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\002\001\000\000\005\230\005\234\000\000\005\238\005\242\002\001\005\246\006\002\006\014\006\022\t\166\002\001\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\002\001\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\012\214\011\230\012\158\006\158\006\162\002\001\000\000\000\000\000\000\000\006\000\000\000\000\002\001\002\198\002\202\002\001\002\246\002\150\000\000\rF\000\000\000\000\004\218\002\001\005\154\000\000\000\000\000\000\006\166\011*\000\000\000\n\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\002\001\000\000\005\230\005\234\000\000\005\238\005\242\002\001\005\246\006\002\006\014\006\022\t\166\002\001\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\r^\006\146\000\000\000\000\000\000\000\000\000\000\000\000\002\001\000\000\000\000\011\194\000\000\000\000\000\000\000\000\022\234\000\000\rf\011\230\012\158\006\158\006\162\002\018\000\000\000\000\000\000\000\006\000\000\000\000\002\022\002\198\002\202\002\030\002\246\002\150\000\000\003\002\000\000\000\000\004\218\001\214\t\174\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\005n\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\t\210\001\226\005\230\005\234\000\000\005\238\005\242\002\190\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\t\218\000\000\000\000\011\194\000\000\000\000\000\000\000\000\022\250\000\000\r\158\011\230\012\158\006\158\006\162\002\018\000\000\000\000\000\000\000\006\000\000\000\000\002\022\002\198\002\202\002\030\002\246\002\150\000\000\003\002\000\000\000\000\004\218\001\214\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\005n\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\t\210\001\226\005\230\005\234\000\000\005\238\005\242\002\190\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\t\218\000\000\000\000\011\194\000\000\000\000\000\000\000\000\023\"\000\000\r\182\011\230\012\158\006\158\006\162\002\018\000\000\000\000\000\000\000\006\000\000\000\000\002\022\002\198\002\202\002\030\002\246\002\150\000\000\003\002\000\000\000\000\004\218\001\214\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\005n\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\t\210\001\226\005\230\005\234\000\000\005\238\005\242\002\190\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\t\218\000\000\000\000\011\194\000\000\000\000\000\000\000\000\0232\000\000\r\218\011\230\012\158\006\158\006\162\002\018\000\000\000\000\000\000\000\006\000\000\000\000\002\022\002\198\002\202\002\030\002\246\002\150\000\000\003\002\000\000\000\000\004\218\001\214\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\005n\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\t\210\001\226\005\230\005\234\000\000\005\238\005\242\002\190\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\t\218\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\014\006\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\014\030\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\0146\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\014N\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\014f\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\014~\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\014\150\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\014\174\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\014\198\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\014\222\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\014\246\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\015\014\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\015&\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\015>\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\015V\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\015n\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\015\134\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\015\158\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\015\182\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\015\206\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\015\214\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\015\238\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\017\030\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\017F\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\017n\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\017\154\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\017\194\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\017\234\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\018\026\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\018B\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\018j\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\018\134\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\019b\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\019v\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\003\002\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\011\170\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\019\146\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000\019\202\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116\019\226\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000\019\234\011\230\012\158\006\158\006\162\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\002\198\002\202\000\000\002\246\002\150\000\000 R\000\000\000\000\004\218\021r\000\000\000\000\002\150\000\000\006\166\011*\000\000\000\000\001\214\011B\003j\012\178\004\222\000\000\005\142\005\146\000\000\000\000\000\000\000\000\000\000\004\226\000\000\005\186\000\000\000\000\000\000\005\230\005\234\000\000\005\238\005\242\000\000\005\246\006\002\006\014\006\022\t\166\000\000\000\000\000\000\002\190\000\000\021v\006\n\000\000\000\000\000\000\011\018\011\022\011\"\0116 j\006\146\000\000\000\000\000\000\021\130\000\000\028\"\000\000\000\000\000\000\011\194\000\000\000\000\000\000\000\000\000\000\000\000 r\011\230\012\158\006\158\006\162\000\000\005\178\000\000\002\202\000\000\000\000\000\000\000\000\006\162\000\000\005~\000\000\000\000\005\166\000\000\000\000\n\218\014\133\000\000\028.\000\000\001\214\014\133\006\166\011*\014\133\015\001\015\001\011B\003j\012\178\015\001\000\000\001\210\015\001\014\133\027\226\000\000\000\000\014\133\000\000\014\133\003\194\000\000\015\001\015\001\015\001\005\174\015\001\015\001\015\001\000\000\000\000\014\133\002\190\000\000\000\000\000\000\000\000\014\133\000\000\000\000\015\001\000\000\000\000\000\000\000\000\000\000\015\001\015\001\000\000\014\133\015\001\000\000\014\133\000\000\000\000\000\000\002\174\014\133\015\001\000\000\t\186\015\001\000\000\000\000\000\000\000\000\015\001\015\001\015\001\000\000\000\000\000\000\000\000\014\133\r\138\015\001\015\001\014\133\000\000\000\000\000\000\000\000\015\001\000\000\000\000\000\000\003\210\014\133\014\133\015\001\000\000\014\133\014\133\000\000\000\000\000\000\015\001\015\001\015\001\000\000\015\001\015\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\133\000\000\015\001\000\000\015\001\015\001\000\000\000\000\000\000\015\001\000\000\016\002\000\000\000\000\015\001\000\000\000\000\000\000\015\001\000\000\015\001\015\001\011M\011M\000\000\000\000\000\000\011M\000\000\001\210\011M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011M\000\000\011M\011M\011M\000\000\011M\011M\011M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011M\000\000\000\000\000\000\000\000\000\000\011M\011M\000\000\000\000\011M\000\000\000\000\000\000\000\000\000\000\002\174\000\000\011M\000\000\000\000\011M\000\000\000\000\000\000\000\000\011M\011M\011M\000\000\000\000\000\000\000\000\000\000\000\000\011M\011M\000\000\000\000\000\000\000\000\000\000\011M\000\000\000\000\000\000\003\210\000\000\000\000\011M\000\000\000\000\000\000\000\000\000\000\000\000\011M\011M\011M\000\000\011M\011M\000\000\000\000\005\181\000\000\000\000\000\000\000\000\005\181\000\000\011M\005\181\011M\011M\000\000\000\000\000\000\011M\000\000\000\000\000\000\005\181\011M\000\000\000\000\005\181\011M\005\181\011M\011M\011U\011U\000\000\000\000\000\000\011U\000\000\001\210\011U\005\181\000\000\000\000\000\000\000\000\000\000\005\181\011U\000\000\011U\011U\011U\000\000\011U\011U\011U\000\000\000\000\005\181\000\000\000\000\005\181\000\000\000\000\000\000\000\000\005\181\011U\000\000\000\000\000\000\000\000\000\000\011U\011U\000\000\000\000\011U\000\000\000\000\000\000\000\000\005\181\002\174\000\000\011U\005\181\000\000\011U\000\000\000\000\000\000\000\000\011U\011U\011U\005\181\005\181\000\000\000\000\005\181\005\181\011U\011U\000\000\000\000\000\000\000\000\000\000\011U\000\000\000\000\000\000\003\210\000\000\000\000\011U\000\000\005\181\000\000\000\000\000\000\000\000\011U\011U\011U\000\000\011U\011U\023\158\000\000\005\173\000\000\000\000\000\000\000\000\005\173\000\000\011U\005\173\011U\011U\000\000\000\000\000\000\011U\000\000\000\000\000\000\005\173\011U\000\000\000\000\005\173\011U\005\173\011U\011U\011Q\011Q\000\000\000\000\000\000\011Q\000\000\001\210\011Q\005\173\000\000\000\000\000\000\000\000\000\000\005\173\011Q\000\000\011Q\011Q\011Q\000\000\011Q\011Q\011Q\000\000\000\000\005\173\000\000\000\000\005\173\000\000\000\000\000\000\000\000\005\173\011Q\000\000\000\000\000\000\000\000\000\000\011Q\011Q\000\000\000\000\011Q\000\000\000\000\000\000\000\000\005\173\002\174\000\000\011Q\005\173\000\000\011Q\000\000\000\000\000\000\000\000\011Q\011Q\011Q\005\173\005\173\000\000\000\000\005\173\005\173\011Q\011Q\000\000\000\000\000\000\000\000\000\000\011Q\000\000\000\000\000\000\003\210\000\000\000\000\011Q\000\000\005\173\000\000\000\000\000\000\000\000\011Q\011Q\011Q\000\000\011Q\011Q\026\174\000\000\005\205\000\000\000\000\000\000\000\000\005\205\000\000\011Q\005\205\011Q\011Q\000\000\000\000\000\000\011Q\000\000\000\000\000\000\005\205\011Q\000\000\000\000\005\205\011Q\005\205\011Q\011Q\011I\011I\000\000\000\000\000\000\011I\000\000\001\210\011I\005\205\000\000\000\000\000\000\000\000\000\000\005\205\011I\000\000\011I\011I\011I\000\000\011I\011I\011I\000\000\000\000\005\205\000\000\000\000\005\205\000\000\000\000\000\000\000\000\005\205\011I\000\000\000\000\000\000\000\000\000\000\011I\011I\000\000\000\000\011I\000\000\000\000\000\000\000\000\005\205\002\174\000\000\011I\005\205\000\000\011I\000\000\000\000\000\000\000\000\011I\011I\011I\005\205\005\205\000\000\000\000\005\205\005\205\011I\011I\000\000\000\000\000\000\000\000\000\000\011I\000\000\000\000\000\000\003\210\000\000\000\000\011I\000\000\005\205\000\000\000\000\000\000\000\000\011I\011I\011I\000\000\011I\011I\027\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011I\000\000\011I\011I\000\000\000\000\000\000\011I\000\000\000\000\000\000\000\000\011I\000\000\re\000\000\011I\re\011I\011I\004\242\002\202\000\000\000\000\002\150\000\000\004\246\000\000\000\000\004\218\000\000\000\000\000\000\re\re\000\000\re\re\000\000\001\214\000\000\001\206\001\210\000\000\000\000\000\000\005.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\162\000\000\re\000\000\005:\001\214\001\254\001\234\000\000\000\000\005F\001\194\000\000\000\000\000\000\001\246\000\000\002\190\000\000\000\000\006R\000\000\002\006\re\006V\000\000\006^\006\134\006\230\006\146\000\000\001\250\002\166\000\000\000\000\000\000\002\178\000\000\002\190\003\022\003\"\006\150\000\000\000\000\000\000\003.\000\000\000\000\000\000\006\158\006\162\000\000\007\"\re\000\000\re\000\000\000\000\007.\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\re\000\000\000\000\re\re\000\000\006\166\000\000\re\000\000\re\000\000\003j\ra\re\000\000\ra\000\000\000\000\004\242\002\202\000\000\000\000\002\150\021z\004\246\000\000\000\000\004\218\000\000\000\000\000\000\ra\ra\000\000\ra\ra\000\000\001\214\000\000\001\206\001\210\000\000\000\000\000\000\005.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ra\000\000\005:\001\214\001\254\001\234\000\000\000\000\007\158\001\194\000\000\000\000\000\000\001\246\000\000\002\190\025\150\000\000\006R\000\000\000\000\ra\006V\000\000\006^\006\134\006\230\006\146\000\000\001\250\026\238\000\000\026\014\000\000\002\178\000\000\002\190\003\022\003\"\006\150\000\000\000\000\000\000\026\254\000\000\000\000\000\000\006\158\006\162\000\000\007\"\ra\000\000\ra\000\000\000\000\007.\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\ra\000\000\000\000\ra\ra\000\000\006\166\000\000\ra\000\000\ra\000y\003j\000\000\ra\000\000\000y\000\000\000y\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\000\000y\000y\000\000\000\000\000y\000y\000y\000\000\011\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000y\000y\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000y\000\000\000y\000\000\000\000\000y\000\000\000\000\000\000\000\000\000y\000y\000y\000\000\000\000\000\000\000\000\000\000\000\000\000y\000y\000\000\000\000\000\000\000\000\000\000\000y\000y\000\000\000\000\000y\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000y\000y\000y\000\000\000y\000y\000\000\000\000\000\000\000\000\000\000\011\005\000\000\000\000\000\000\000y\015\005\015\005\000y\000\000\000\000\015\005\000y\000\000\015\005\000\000\000\000\000y\000\000\000\000\000\000\000y\003\226\000y\015\005\015\005\015\005\000\000\015\005\015\005\015\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\005\000\000\000\000\000\000\000\000\000\000\015\005\015\005\000\000\000\000\015\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\005\000\000\000\000\015\005\000\000\000\000\000\000\000\000\015\005\015\005\015\005\000\000\000\000\000\000\000\000\000\000\000\000\015\005\015\005\000\000\000\000\000\000\000\000\000\000\015\005\000\000\000\000\000\000\015\005\000\000\000\000\015\005\000\000\000\000\000\000\000\000\000\000\000\000\015\005\015\005\015\005\000\000\015\005\015\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\005\000\250\015\005\015\005\002\206\003\229\003\229\015\005\000\000\000\000\003\229\000\000\015\005\003\229#\174\000\000\015\005\000\000\015\005\015\005\005\138\003\226\000\000\003\229\003\229\003\229\000\000\003\229\003\229\003\229\000\000\000\000\005\150\000\000\000\000\000\000\000\000\000\000\023b\000\000\000\000\003\229\000\000\000\000\000\000\000\000\000\000\003\229!j\000\000\0316\003\229\000\000\023\198\000\000\000\000\000\000\000\000\023\222\003\229\000\000\000\000\003\229\000\000\000\000\000\000\000\000\003\229\003\229\003\229\000\000\000\000\000\000\000\000\023\230\000\000\003\229\003\229#^\000\000\000\000\000\000\000\000\003\229\000\000\000\000\000\000\003\229\023\250\0246\003\229\000\000\006\025\000\000\000\000\000\000\000\000\003\229\003\229\003\229\000\000\003\229\003\229\003\209\003\209\000\000\000\000\000\000\003\209\000\000\028v\003\209\003\229\000\000\003\229\003\229\000\000\000\000\000\000\003\229\000\000\003\209\003\209\003\209\003\229\003\209\003\209\003\209\003\229\000\000\003\229\003\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\209\000\000\000\000\000\000\000\000\000\000\003\209\003z\000\000\000\000\003\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\209\000\000\000\000\003\209\000\000\000\000\000\000\000\000\003\209\003\209\003\209\000\000\000\000\000\000\000\000\000\000\000\000\003\209\003\209\000\000\000\000\000\000\000\000\000\000\003\209\000\000\000\000\000\000\003\209\000\000\000\000\003\209\000\000\000\000\000\000\000\000\000\000\000\000\003\209\003\209\003\209\000\000\003\209\003\209\001\193\001\193\000\000\000\000\000\000\001\193\000\000\000\000\001\193\003\209\000\000\003\209\003\209\000\000\000\000\000\000\003\209\000\000\001\193\001\193\001\193\003\209\001\193\001\193\001\193\003\209\000\000\003\209\003\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\001\193\001\193\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\193\000\000\000\000\001\193\000\000\000\000\000\000\000\000\001\193\001\193\001\193\000\000\000\000\000\000\000\000\000\000\000\000\001\193\001\193\000\000\000\000\000\000\000\000\000\000\001\193\000\000\000\000\000\000\001\193\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\000\000\001\193\001\193\001\193\000\000\001\193\001\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\193\000\000\001\193\001\193\004\242\002\202\000\000\001\193\002\150\000\000\tv\000\000\001\193\004\218\000\000\000\000\003\254\000\000\001\193\000\000\000\000\000\000\000\000\001\214\000\000\t\150\000\000\000\000\000\000\000\000\005.\000\000\000\000\011\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005:\000\000\000\000\000\000\000\000\000\000\012\030\001\194\000\000\000\000\000\000\000\000\000\000\002\190\000\000\000\000\006R\000\000\000\000\r=\006V\000\000\006^\000\000\012.\006\146\000\000\000\000\000\000\000\000\007\r\007\r\000\000\000\000\005\137\007\r\000\000\006\150\007\r\000\000\000\000\000\000\000\000\000\000\000\000\006\158\006\162\000\000\007\r\016\014\007\r\000\000\007\r\000\000\007\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r=\000\000\007\r\r=\r=\000\000\006\166\000\000\007\r\007\r\r=\000\000\003j\000\000\r=\005\137\000\000\007\r\000\000\000\000\007\r\000\000\001\n\007\r\000\000\000\000\000\000\000\000\007\r\007\r\007\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\000\000\000\000\000\000\002\162\000\000\007\r\007\r\000\000\000\000\007\r\000\000\000\000\001\018\001\022\001\026\001\030\001\"\001&\000\000\007\r\007\r\007\r\000\000\007\r\007\r\001*\000\000\0012\0016\000\000\n\142\000\000\000\000\000\000\000\000\000\000\001:\007\r\000\000\001>\007\r\007\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\r\000\000\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\001V\000\000\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001^\004!\004!\004!\004!\000\000\004!\001b\004!\004!\000\000\004!\000\000\000\000\000\000\000\000\000\000\001\158\"r\004!\000\000\004!\000\000\004!\001\162\004!\001\166\004!\000\000\000\000\001\170\000\000\001\174\001\178\000\000\000\000\000\000\004!\000\000\004!\000\000\000\000\000\000\004!\004!\004!\004!\000\000\000\000\000\000\000\000\000\000\006\137\000\000\006\141\004!\000\000\004!\004!\000\000\004!\000\000\000\000\004!\004!\004!\004!\004!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004!\000\000\004!\000\000\004!\000\000\004!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004!\004!\004!\004!\004!\004!\004!\004!\000\000\000\000\000\000\006\137\000\000\006\141\000\000\000\000\000\000\000\000\004!\004!\004!\004!\004!\000\000\004!\000\000\007\001\007\001\000\000\000\000\000\000\007\001\000\000\004!\007\001\004!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\001\000\000\007\001\000\000\007\001\000\000\007\001\000\000\000\000\n\173\000\000\000\000\n\173\000\000\000\000\000\000\000\000\000\000\007\001\000\000\000\000\000\000\000\000\000\000\007\001\007\001\000\000\000\000\n\173\n\173\000\000\n\173\n\173\n\214\000\000\000\000\007\001\000\000\000\000\007\001\000\000\000\000\000\000\000\000\007\001\007\001\000\242\000\000\000\000\000\000\000\000\000\000\n\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\001\007\001\000\000\000\000\007\001\000\000\000\000\011i\000\000\000\000\000\000\000\000\000\000\n\173\007\001\007\001\007\001\000\000\007\001\007\001\000\000\000\000\000\000\r\154\000\000\000\000\017\006\011i\000\000\011i\011i\000\000\007\001\000\000\000\000\007\001\007\001\014\002\014J\014b\014\026\014z\000\000\n\173\000\000\n\173\000\000\007\001\000\000\000\000\000\000\014\146\014\170\000\000\000\000\000\000\000\000\000\000\007^\000\000\000\000\n\173\n\173\014\194\000\000\000\000\n\173\000\000\n\173\000\000\000\000\000\242\n\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\178\0142\014\218\014\242\015\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015:\000\000\000\000\000\000\000\000\001\n\000\000\000\000\000\000\015R\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\000\000\000\000\015\178\000\000\015\234\015\n\000\000\000\000\000\000\000\000\011i\015j\001\018\001\022\001\026\001\030\001\"\001&\000\000\015\130\015\154\000\000\000\000\000\000\000\000\001*\004\153\0012\0016\004\153\000\000\000\000\000\000\000\000\000\000\000\000\001:\000\000\000\000\001>\000\000\000\000\000\000\000\000\000\000\004\153\004\153\000\000\004\153\004\153\000\000\000\000\000\000\000\000\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\001V\000\000\002\001\002\001\001Z\004\153\002\001\000\000\002\001\000\000\000\000\002\001\000\000\001^\000\000\000\000\000\000\002\001\000\000\000\000\001b\002\001\000\000\000\000\000\000\000\000\000\242\000\000\002\001\000\n\001\158\"\142\t\170\000\000\000\000\000\000\000\000\001\162\021&\001\166\000\000\002\001\000\000\001\170\000\000\001\174\001\178\002\001\002\001\000\000\000\000\000\000\000\000\000\000\002\001\000\000\004\153\002\001\004\153\000\000\002\001\002\001\000\000\002\001\002\001\002\001\002\001\000\000\000\000\000\000\000\000\004\153\n\221\n\221\007\142\004\153\000\000\n\221\002\001\004\153\n\221\004\153\000\000\000\000\000\000\004\153\002\001\002\001\000\000\021f\n\221\000\000\n\221\000\000\n\221\000\000\n\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\221\000\000\000\000\002\001\000\000\000\000\n\221\n\221\000\000\002\001\000\000\000\000\000\250\000\000\000\000\002&\000\000\000\000\n\221\000\000\000\000\n\221\000\000\000\000\000\000\024v\n\221\n\221\n\221\000\000\000\000\005\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\221\024z\000\000\000\000\n\221\000\000\000\000\024\162\000\000\000\000\000\000\000\000\000\000\000\000\n\221\n\221\n\221\000\000\n\221\n\221\015\205\015\205\023\198\000\000\000\000\015\205\000\000\023\222\015\205\n\221\000\000\000\000\n\221\000\000\000\000\000\000\n\221\000\000\015\205\000\000\015\205\000\000\015\205\025B\015\205\003\254\000\000\n\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\205\023\250\025V\000\000\000\000\005\229\015\205\015\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\000\000\015\205\000\000\000\000\015\205\000\000\025f\000\000\000\000\015\205\015\205\015\205\015\209\015\209\000\000\000\000\000\000\015\209\000\000\000\000\015\209\000\000\000\000\000\000\000\000\015\205\000\000\000\000\000\000\015\205\015\209\000\000\015\209\000\000\015\209\000\000\015\209\000\000\000\000\015\205\015\205\015\205\000\000\015\205\015\205\000\000\000\000\000\000\015\209\000\000\003J\000\000\000\000\000\000\015\209\015\209\000\000\015\205\000\000\000\000\000\000\015\205\000\000\003:\000\000\000\000\015\209\000\000\000\000\015\209\000\000\000\000\015\205\000\000\015\209\015\209\015\209\001\177\005Z\t\214\000\000\000\000\001\177\000\000\001\210\001\177\002\022\000\000\000\000\002\030\015\209\000\000\t\198\011E\015\209\001\177\000\000\001\214\000\000\001\177\000\000\001\177\000\000\000\000\015\209\015\209\015\209\000\000\015\209\015\209\000\000\000\000\000\000\001\177\005n\003J\000\000\000\000\000\000\001\177\001\177\000\000\015\209\t\210\001\226\000\000\015\209\000\000\000\000\002\174\002\190\001\177\000\000\000\000\001\177\000\000\000\000\015\209\000\000\001\177\001\177\001\177\000\000\000\000\005\157\000\000\000\000\000\000\000\000\005\157\000\000\000\000\005\157\000\000\000\000\001\177\001\177\000\000\t\218\003\210\000\000\000\000\005\157\000\000\000\000\000\000\005\157\000\000\005\157\001\177\001\177\004\005\000\000\001\177\001\177\000\000\004\005\000\000\001\210\004\005\005\157\000\000\000\000\000\000\001\177\000\000\005\157\011A\000\000\004\005\000\000\001\177\000\000\004\005\000\000\004\005\001\177\000\000\005\157\000\000\000\000\005\157\001\177\000\000\000\000\000\000\005\157\004\005\000\000\000\000\000\000\000\000\000\000\004\005\001\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\157\002\174\000\000\004\005\005\157\000\000\004\005\000\000\000\000\000\000\000\000\004\005\004\005\004\005\005\157\005\157\000\000\000\000\005\157\005\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\005\004\005\000\000\000\000\003\210\000\000\000\000\000\000\000\000\005\157\000\000\000\000\000\000\000\000\004\005\004\005\004\001\000\000\004\005\004\005\031\n\004\001\000\000\001\210\004\001\000\000\000\000\000\000\000\000\004\005\000\000\000\000\011A\000\000\004\001\000\000\004\005\000\000\004\001\000\000\004\001\004\005\000\000\000\000\000\000\000\000\000\000\004\005\000\000\000\000\000\000\000\000\004\001\000\000\000\000\000\000\000\000\000\000\004\001\001\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\174\000\000\004\001\000\000\000\000\004\001\000\000\000\000\000\000\000\000\004\001\004\001\004\001\000\000\000\153\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\153\000\000\000\000\000\000\004\001\004\001\000\000\000\000\003\210\000\000\000\153\000\000\000\153\000\000\000\153\000\000\000\153\000\000\004\001\004\001\000\000\000\000\004\001\004\001\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\004\001\000\153\000\000\000\000\000\000\000\153\000\000\004\001\000\000\000\000\000\000\000\000\004\001\000\153\000\000\000\000\000\153\000\000\004\001\000\000\000\000\000\153\000\153\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\000\000\221\000\000\000\153\000\000\000\000\000\221\000\000\000\000\000\221\000\000\000\000\000\000\000\153\000\153\000\000\000\000\000\153\000\153\000\221\000\000\000\221\000\000\000\221\000\000\000\221\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\153\000\000\000\153\000\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\221\000\221\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\161\000\000\000\221\000\000\000\000\000\161\000\000\000\000\000\161\000\000\000\000\000\000\000\221\000\221\000\000\000\000\000\221\000\221\000\161\000\000\000\161\000\000\000\161\000\000\000\161\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\000\000\161\000\000\000\000\000\000\000\000\000\000\000\161\000\221\000\000\000\221\000\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\161\000\000\000\000\000\161\000\000\000\000\000\000\000\000\000\161\000\161\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\161\000\161\000\000\000\000\000\000\000\000\000\000\000\161\000\000\000\157\000\000\000\161\000\000\000\000\000\157\000\000\000\000\000\157\000\000\000\000\000\000\000\161\000\161\000\000\000\000\000\161\000\161\000\157\000\000\000\157\000\000\000\157\000\000\000\157\000\000\000\000\000\161\000\000\000\000\000\000\000\000\000\000\000\161\000\161\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\157\000\161\000\000\000\161\000\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\000\000\157\000\000\000\000\000\000\000\000\000\157\000\157\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\157\000\157\000\000\000\000\000\000\000\000\000\000\000\157\000\000\001\141\000\000\000\157\000\000\000\000\001\141\000\000\000\000\001\141\000\000\000\000\000\000\000\157\000\157\000\000\000\000\000\157\000\157\001\141\000\000\000\000\000\000\001\141\000\000\001\141\000\000\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\157\000\157\000\000\001\141\001\141\000\000\000\000\000\000\000\000\001\141\000\157\000\000\000\157\000\000\000\000\000\000\000\000\000\000\006\137\000\000\000\000\001\141\000\000\000\000\001\141\000\000\006\222\000\000\000\000\001\141\001\141\001\141\004\242\002\202\000\000\000\000\002\150\000\000\004\246\000\000\000\000\004\218\000\000\000\000\000\000\001\141\006\226\000\000\006Z\001\141\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005.\001\141\001\141\000\000\000\000\001\141\001\141\000\000\000\000\000\000\000\000\000\000\006\137\005:\000\000\000\000\001\141\000\000\000\000\005F\001\194\000\000\001\141\001\141\000\000\000\000\002\190\000\000\001\141\006R\000\000\000\000\000\000\006V\001\141\006^\006\134\006\230\006\146\000\000\000\000\011\145\000\000\000\000\000\000\000\000\000\000\004\242\002\202\000\000\006\150\002\150\000\000\004\246\000\000\000\000\004\218\000\000\006\158\006\162\000\000\007\"\000\000\011\145\000\000\000\000\001\214\007.\000\000\000\000\000\000\000\000\000\000\005.\000\000\000\000\000\000\000\000\000\000\000\000\bB\000\000\000\000\006\166\000\000\b\150\005:\011\218\000\000\003j\000\000\000\000\005F\001\194\000\000\000\000\000\000\000\000\000\000\002\190\000\000\000\000\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\006\230\006\146\000\000\000\000\000\000\000\000\000\000\015\201\015\201\000\000\000\000\000\000\015\201\006\150\000\000\015\201\000\000\000\000\000\000\000\000\000\000\006\158\006\162\000\000\007\"\015\201\000\000\015\201\000\000\015\201\007.\015\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\201\000\000\000\000\006\166\000\000\011\145\015\201\015\201\000\000\003j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\201\000\000\000\000\015\201\000\000\000\000\000\000\000\000\015\201\015\201\015\201\015\197\015\197\000\000\000\000\000\000\015\197\000\000\000\000\015\197\000\000\000\000\000\000\000\000\015\201\000\000\000\000\000\000\015\201\015\197\000\000\015\197\000\000\015\197\000\000\015\197\000\000\000\000\015\201\015\201\015\201\000\000\015\201\015\201\000\000\000\000\000\000\015\197\000\000\000\000\000\000\000\000\000\000\015\197\015\197\000\000\015\201\000\000\000\000\000\000\015\201\000\000\000\000\000\000\000\000\015\197\000\000\000\000\015\197\003\254\000\000\015\201\000\000\015\197\015\197\015\197\000\000\n\225\n\225\000\000\000\000\000\000\n\225\000\000\000\000\n\225\000\000\000\000\000\000\015\197\000\000\000\000\000\000\015\197\000\000\n\225\000\000\n\225\000\000\n\225\000\000\n\225\000\000\015\197\015\197\015\197\000\000\015\197\015\197\000\000\000\000\000\000\000\000\n\225\000\000\000\000\000\000\000\000\n&\n\225\n\225\015\197\000\000\000\000\000\000\015\197\000\000\000\000\000\000\000\000\000\000\n\225\000\000\000\000\n\225\000\000\015\197\000\000\000\000\n\225\n\225\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\225\000\000\000\000\000\000\n\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\225\n\225\n\225\000\000\n\225\n\225\000\000\000\000\002\001\002\001\000\000\000\000\002\001\000\000\002\001\n\225\000\000\002\001\n\225\000\000\000\000\000\000\n\225\000\000\000\000\000\000\000\000\002\001\000\000\002\001\000\000\000\000\000\000\n\225\002\001\000\n\000\000\002\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\001\000\000\000\000\000\000\000\000\000\000\002\001\002\001\000\000\000\000\000\000\000\000\000\000\002\001\000\000\000\000\002\001\000\000\000\000\002\001\002\001\000\000\002\001\002\001\002\001\002\001\000\000\000\000\000\000\000\000\000\000\000\000\004\242\002\202\000\000\000\000\002\150\002\001\tv\000\000\000\000\004\218\000\000\000\000\000\000\002\001\002\001\000\000\002\001\000\000\000\000\001\214\000\000\t\150\002\001\000\000\000\000\000\000\005.\000\000\000\000\011\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\189\002\001\005:\000\000\000\000\002\001\000\000\002\001\012\030\001\194\000\000\000\000\b\157\000\000\000\000\002\190\000\000\000\000\006R\000\000\000\000\000\000\006V\000\000\006^\000\000\012.\006\146\r\154\000\000\000\000\b\157\000\000\000\000\000\000\b\157\000\000\000\000\000\000\006\150\000\000\000\000\014\002\014J\014b\014\026\014z\006\158\006\162\000\000\000\000\003\189\000\000\000\000\000\000\000\000\014\146\014\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\189\014\194\000\000\003\189\000\000\006\166\000\000\000\000\000\000\000\242\000\000\003j\000\000\000\000\000\000\000\000\000\000\000\000\r\178\0142\014\218\014\242\015\"\000\000\000\000\000\000\001\173\000\000\000\000\b\157\015:\001\173\000\000\001\210\001\173\000\000\000\000\000\000\000\000\015R\000\000\000\000\011A\000\000\001\173\000\000\000\000\000\000\001\173\000\000\001\173\000\000\000\000\000\000\015\178\000\000\015\234\015\n\000\000\000\000\000\000\000\000\001\173\015j\000\000\000\000\000\000\000\000\001\173\000\000\000\000\015\130\015\154\000\000\000\000\000\000\000\000\000\000\002\174\000\000\001\173\000\000\023\022\001\173\000\000\000\000\000\000\000\000\001\173\001\173\001\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\154\000\000\000\000\000\000\023\026\000\000\001\173\001\173\000\000\000\000\003\210\000\000\000\000\000\000\014\002\014J\014b\014\026\014z\000\000\001\173\001\173\000\000\000\000\001\173\001\173\000\000\000\000\014\146\014\170\000\000\000\000\000\000\000\000\000\000\001\173\000\000\000\000\000\000\000\000\014\194\000\000\001\173\000\000\000\000\000\000\000\000\001\173\000\242\000\000\000\000\000\000\000\000\001\173\000\000\000\000\000\000\r\178\0142\014\218\014\242\015\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015:\000\250\001\206\001\210\002&\000\000\000\000\000\000\000\000\015R\000\000\000\000\000\000\000\000\024v\000\000\000\000\000\000\005\229\000\000\005\138\001\214\001\254\001\234\015\178\023\030\015\234\015\n\023.\000\000\000\000\001\246\024z\015j\000\000\000\000\000\000\000\000\024\162\000\000\000\000\015\130\015\154\000\000\000\000\000\000\000\000\001\250\002\166\000\000\000\000\000\000\002\178\023\198\002\190\003\022\003\"\006\129\023\222\000\000\000\000\003.\006\129\000\000\006\129\006\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\129\025B\006\129\000\000\006\129\0032\006\129\000\000\006\129\000\000\000\000\000\000\000\000\000\000\000\000\023\250\025V\000\000\000\000\000\000\006\129\000\000\000\000\000\000\000\000\000\000\006\129\006\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\129\025f\000\000\000\000\000\000\006\129\003f\000\000\003j\000\000\006\129\006\129\006\129\007A\007A\000\000\000\000\000\000\007A\000\000\000\000\007A\000\000\000\000\000\000\000\000\006\129\000\000\000\000\000\000\006\129\007A\000\000\007A\000\000\007A\000\000\007A\000\000\000\000\006\129\006\129\006\129\000\000\006\129\006\129\000\000\000\000\000\000\007A\000\000\000\000\000\000\000\000\000\000\007A\007A\000\000\000\000\000\000\000\000\026\242\006\129\000\000\n\214\000\000\000\000\007A\000\000\000\000\007A\000\000\000\000\006\129\000\000\007A\007A\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007A\000\000\000\000\000\000\007A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007A\007A\007A\000\000\007A\007A\000\000\005\221\000\000\007\214\005\221\000\000\000\000\000\000\000\000\004\242\002\202\000\000\007A\002\150\005\221\007\218\007A\000\000\004\218\000\000\005\221\000\000\000\000\000\000\000\000\000\000\000\000\007A\001\214\000\000\000\000\000\000\005\221\000\000\000\000\005.\000\000\000\000\005\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005:\000\000\005\221\000\000\000\000\005\221\005F\001\194\000\000\000\000\005\221\002\238\000\000\002\190\000\000\000\000\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\007\246\006\146\005\221\000\000\000\000\000\000\005\221\007=\t\250\000\000\000\000\000\000\007=\006\150\000\000\007=\005\221\005\221\000\000\000\000\005\221\006\158\006\162\000\000\007\"\007=\000\000\007=\000\000\007=\007.\007=\000\000\007\254\000\000\000\000\000\000\000\000\005\221\000\000\000\000\000\000\000\000\007=\000\000\000\000\006\166\000\000\000\000\007=\nz\000\000\003j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007=\000\000\000\000\007=\000\000\000\000\000\000\000\000\007=\007=\000\242\015\213\015\213\000\000\000\000\000\000\015\213\000\000\000\000\015\213\000\000\000\000\000\000\000\000\007=\000\000\000\000\000\000\007=\015\213\000\000\015\213\000\000\015\213\000\000\015\213\000\000\000\000\007=\007=\007=\000\000\007=\007=\000\000\000\000\000\000\015\213\000\000\000\000\000\000\000\000\000\000\015\213\015\213\000\000\007=\000\000\000\000\000\000\007=\000\000\000\000\000\000\000\000\015\213\000\000\000\000\015\213\000\000\000\000\007=\000\000\015\213\015\213\000\242\015\217\015\217\000\000\000\000\000\000\015\217\000\000\000\000\015\217\000\000\000\000\000\000\000\000\015\213\000\000\000\000\000\000\015\213\015\217\000\000\015\217\000\000\015\217\000\000\015\217\000\000\000\000\015\213\015\213\015\213\000\000\015\213\015\213\000\000\000\000\000\000\015\217\000\000\000\000\000\000\000\000\000\000\015\217\nz\000\000\015\213\000\000\000\000\000\000\015\213\000\000\000\000\000\000\000\000\015\217\000\000\000\000\015\217\000\000\000\000\015\213\000\000\015\217\015\217\000\242\007U\t\250\000\000\000\000\000\000\007U\000\000\000\000\007U\000\000\000\000\000\000\000\000\015\217\000\000\000\000\000\000\015\217\007U\000\000\007U\000\000\007U\000\000\007U\000\000\000\000\015\217\015\217\015\217\000\000\015\217\015\217\000\000\000\000\000\000\007U\000\000\000\000\000\000\000\000\000\000\007U\nz\000\000\015\217\000\000\000\000\000\000\015\217\000\000\000\000\000\000\000\000\007U\000\000\000\000\007U\000\000\000\000\015\217\000\000\007U\007U\000\242\007Y\007Y\000\000\000\000\000\000\007Y\000\000\000\000\007Y\000\000\000\000\000\000\000\000\007U\000\000\000\000\000\000\007U\007Y\000\000\007Y\000\000\007Y\000\000\007Y\000\000\000\000\007U\007U\007U\000\000\007U\007U\000\000\000\000\000\000\007Y\000\000\000\000\000\000\000\000\000\000\007Y\007Y\000\000\007U\000\000\000\000\000\000\007U\000\000\000\000\000\000\000\000\007Y\000\000\000\000\007Y\000\000\000\000\007U\000\000\007Y\007Y\007Y\0079\t\250\000\000\000\000\000\000\0079\000\000\000\000\0079\000\000\000\000\000\000\000\000\007Y\000\000\000\000\000\000\007Y\0079\000\000\0079\000\000\0079\000\000\0079\000\000\000\000\007Y\007Y\007Y\000\000\007Y\007Y\000\000\000\000\000\000\0079\000\000\000\000\000\000\000\000\000\000\0079\nz\000\000\007Y\000\000\000\000\000\000\007Y\000\000\000\000\000\000\000\000\0079\000\000\000\000\0079\000\000\000\000\n\162\000\000\0079\0079\000\242\003\253\000\000\000\000\000\000\000\000\003\253\000\000\001\210\003\253\000\000\000\000\000\000\000\000\0079\000\000\000\000\000\000\0079\003\253\000\000\000\000\000\000\003\253\000\000\003\253\000\000\000\000\0079\0079\0079\000\000\0079\0079\000\000\000\000\000\000\003\253\000\000\000\000\000\000\000\000\000\000\003\253\000\000\000\000\0079\000\000\000\000\003\249\0079\000\000\000\000\002\174\003\249\003\253\001\210\003\249\003\253\000\000\000\000\0079\000\000\003\253\003\253\003\253\000\000\003\249\000\000\000\000\000\000\003\249\000\000\003\249\000\000\000\000\000\000\000\000\000\000\003\253\003\253\000\000\000\000\003\210\000\000\003\249\000\000\000\000\000\000\000\000\000\000\003\249\000\000\003\253\003\253\000\000\000\000\003\253\003\253\000\000\000\000\002\174\000\000\003\249\000\000\000\000\003\249\000\000\003\253\000\000\000\000\003\249\003\249\003\249\000\000\003\253\0011\000\000\000\000\000\000\003\253\0011\000\000\000\000\0011\000\000\003\253\003\249\003\249\000\000\000\000\003\210\000\000\000\000\0011\000\000\0011\000\000\0011\000\000\0011\003\249\003\249\000\000\000\000\003\249\003\249\000\000\000\000\000\000\000\000\000\000\0011\000\000\000\000\000\000\003\249\000\000\0011\b\165\000\000\000\000\0011\003\249\b\165\000\000\000\000\b\165\003\249\000\000\0011\000\000\000\000\0011\003\249\000\000\000\000\b\165\0011\0011\000\242\b\165\001-\b\165\000\000\000\000\000\000\001-\0011\000\000\001-\000\000\000\000\000\000\0011\b\165\000\000\000\000\0011\000\000\001-\b\165\001-\000\000\001-\000\000\001-\000\000\0011\0011\0011\000\000\0011\0011\000\000\000\000\b\165\000\000\001-\000\000\000\000\b\165\b\165\0011\001-\000\000\000\000\000\000\001-\000\000\0011\000\000\000\000\000\000\000\000\000\000\001-\b\165\000\000\001-\000\000\0011\000\000\000\000\001-\001-\000\242\000\000\000\000\000\000\000\000\b\165\b\165\023v\001-\b\165\b\165\000\000\000\000\000\000\001-\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\024\182\000\000\000\000\b\165\001-\001-\001-\001i\001-\001-\000\000\000\000\001i\000\000\015%\001i\000\000\000\000\000\000\001-\000\000\000\000\000\000\015%\000\000\001i\001-\001i\000\000\001i\000\000\001i\000\000\000\000\000\000\000\000\000\000\001-\000\000\000\000\000\000\000\000\000\000\001i\000\000\000\000\000\000\000\000\000\000\001i\015%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015%\000\000\000\000\000\000\000\000\001i\000\000\000\000\000\000\000\000\001i\001i\001i\001\029\000\000\000\000\000\000\000\000\001\029\000\000\002\025\001\029\000\000\000\000\000\000\000\000\001i\000\000\000\000\002\025\015%\001\029\000\000\001\029\000\000\001\029\000\000\001\029\000\000\000\000\001i\001i\001i\000\000\001i\001i\000\000\000\000\000\000\001\029\000\000\000\000\000\000\000\000\000\000\001\029\002\025\000\000\000\000\000\000\000\000\001\185\001i\000\000\000\000\002\025\001\185\000\000\021r\001\185\001\029\002\150\000\000\001i\000\000\001\029\001\029\001\029\000\000\001\185\000\000\000\000\000\000\001\185\000\000\001\185\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\000\000\002\025\000\000\001\185\000\000\000\000\000\000\000\000\000\000\001\185\000\000\001\029\001\029\001\029\000\000\001\029\001\029\000\000\021v\000\000\000\000\001\185\000\000\000\000\001\185\000\000\000\000\000\000\000\000\001\185\001\185\000\000\021\130\001\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\001\185\000\000\000\000\000\000\001\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\162\001\185\001\185\005\197\005\197\001\185\001\185\005\197\000\000\005\197\000\000\000\000\005\197\000\000\000\000\000\000\001\185\000\000\005\197\000\000\000\000\000\000\005\197\001\185\000\000\000\000\000\000\000\000\000\000\005\197\029\214 \142\000\000\029\238\001\185\000\000\000\000\004\242\002\202\000\000\000\000\002\150\005\197\004\246\000\000\000\000\004\218\000\000\005\197\005\197\000\000\000\000\000\000\bZ\000\000\005\197\001\214\000\000\005\197\000\000\000\000\000\242\005\197\005.\005\197\005\197\005\197\005\197\000\000\000\000\000\000\000\250\000\000\000\000\002\206\000\000\005:\000\000\000\000\005\197\000\000\000\000\005F\001\194\006\017\000\000\000\000\005\197\005\197\002\190\005\138\000\000\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\006\230\006\146\005\150\000\000\000\000\000\000\000\000\000\000\023b\000\000\004\242\002\202\005\197\006\150\002\150\000\000\005\018\000\000\005\197\004\218\0316\006\158\006\162\023\198\007\"\000\000\000\000\000\000\023\222\001\214\007.\000\000\000\000\000\000\000\000\000\000\005.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023\230\000\000\006\166\000\000\000\000\005:\011\218\000\000\003j\000\000\000\000\005F\001\194\000\000\023\250\0246\000\000\000\000\002\190\000\000\000\000\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\031\198\006\146\000\000\000\000\000\000\000\000\000\000\028v\000\000\000\000\000\000\000\000\000\000\006\150\000\000\000\000\007\237\000\000\000\000\000\000\000\000\006\158\006\162\002\202\007\"\000\000\002\150\000\000\000\000\000\000\007.\004\218\000\000\031\206\000\000\000\000\007\237\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\004\222\006\166\000\000\000\000\000\000\000\000\000\000\003j\000\000\004\226\000\000\005\186\000\000\000\000\000\000\000\000\000\000\000\000\005\238\005\242\000\000\000\000\006\002\001\194\000\000\000\000\000\000\000\000\000\000\002\190\000\000\000\000\006\n\000\000\000\000\000\000\011\018\011\022\011\"\000\000\000\000\006\146\000\000\000\000\004\242\002\202\000\000\000\000\002\150\000\000\006\242\000\000\000\000\004\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\158\006\162\001\214\000\000\000\000\000\000\000\000\000\000\000\000\005.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005:\000\000\000\000\006\166\011*\000\000\005F\001\194\011B\003j\bm\bm\000\000\002\190\000\000\000\000\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\007\014\006\146\000\000\000\000\000\000\bm\bm\bm\004\242\002\202\000\000\000\000\002\150\006\150\007b\bm\000\000\004\218\000\000\000\000\000\000\006\158\006\162\000\000\007\"\000\000\000\000\001\214\000\000\000\000\007.\bm\bm\b:\005.\000\000\bm\000\000\bm\bm\bm\000\000\000\000\000\000\000\000\bm\006\166\005:\000\000\000\000\000\000\000\000\003j\005F\001\194\000\000\000\000\001\206\001\210\029*\002\190\000\000\bm\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\007~\006\146\007\146\000\000\000\000\001\214\001\218\001\234\004\242\002\202\000\000\000\000\002\150\006\150\004\246\001\246\000\000\004\218\000\000\000\000\000\000\006\158\006\162\000\000\007\"\000\000\000\000\001\214\000\000\000\000\007.\001\250\002\166\007\134\005.\0046\002\178\000\000\002\190\003\022\003\"\000\000\000\000\000\000\000\000\003.\006\166\005:\000\000\000\000\000\000\000\000\003j\005F\001\194\000\000\000\000\001\206\001\210\029\138\002\190\000\000\0032\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\006\230\006\146\b\030\000\000\000\000\001\214\001\218\001\234\004\242\002\202\000\000\000\000\002\150\006\150\004\246\001\246\000\000\004\218\000\000\000\000\000\000\006\158\006\162\000\000\007\"\000\000\000\000\001\214\000\000\000\000\007.\001\250\002\166\000\000\005.\000\000\002\178\000\000\002\190\003\022\003\"\000\000\000\000\000\000\000\000\003.\006\166\005:\000\000\000\000\000\000\000\000\003j\005F\001\194\000\000\000\000\001\206\001\210\000\000\002\190\000\000\0032\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\006\230\006\146\b\190\000\000\000\000\001\214\001\254\000\000\004\242\002\202\000\000\000\000\002\150\006\150\004\246\000\000\000\000\004\218\000\000\000\000\000\000\006\158\006\162\000\000\007\"\000\000\000\000\001\214\000\000\000\000\007.\001\250\002\182\000\000\005.\000\000\002\178\000\000\002\190\003\022\003\"\000\000\000\000\000\000\000\000\003.\006\166\005:\000\000\000\000\000\000\000\000\003j\005F\001\194\000\000\000\000\000\000\000\000\000\000\002\190\000\000\0032\006R\000\000!F\000\000\006V\000\000\006^\006\134\006\230\006\146\016\210\000\000\000\000\000\000\000\000\000\000\004\242\002\202\000\000!2\002\150\006\150\004\246\000\000\000\000\004\218\000\000\000\000\000\000\006\158\006\162\000\000\007\"\000\000\000\000\001\214\000\000\000\000\007.\000\000\000\000\000\000\005.\000\000\000\000\005\221\000\000\000\000\000\000\000\000\005\221\000\000\000\000\005\221\006\166\005:\000\000\000\000\000\000\000\000\003j\005F\001\194\005\221\000\000\000\000\000\000\005\221\002\190\005\221\000\000\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\006\230\006\146\005\221\000\000\000\000\000\000\000\000\000\000\005\221\000\000\000\000\000\000\005\221\006\150\000\000\000\000\000\000\003:\000\000\000\000\005\221\006\158\006\162\005\221\007\"\000\000\000\000\000\000\005\221\002\238\007.\000\000\000\000\000\000\000\000\000\000\000\000\005\221\005\221\000\000\000\000\000\000\000\000\000\000\005\221\005\221\006\166\000\000\005\221\000\000\b\021\000\000\003j\000\000\000\000\000\000\000\000\002\202\005\221\005\221\002\150\000\000\005\221\005\221\000\000\004\218\000\000\000\000\000\000\003J\b\021\000\000\000\000\005\221\000\000\001\214\000\000\000\000\000\000\004\222\005\221\014\229\000\000\000\000\014\229 \174\000\000\000\000\004\226\000\000\005\186\005\221\000\000\000\000\014\229\000\000\000\000\005\238\005\242\000\000\014\229\006\002\001\194\000\000\000\000\000\000\000\000\000\000\002\190\000\000\000\000\006\n\014\229\000\000\000\000\011\018\011\022\011\"\014\229\000\000\006\146\t\197\000\000\000\000\000\000\000\000\t\197\000\000\000\000\t\197\014\229\000\000\000\000\014\229\000\000\000\000\000\000\000\000\014\229\t\197\006\158\006\162\000\000\t\197\000\000\t\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\229\000\000\000\000\t\197\014\229\000\000\000\000\000\000\000\000\t\197\000\000\006\166\011*\t\197\014\229\014\229\011B\003j\014\229\000\000\000\000\t\197\000\000\000\000\t\197#V\000\000\000\000\000\000\t\197\t\197\000\242\000\000\000\000\000\000\000\000\014\229\000\000\t\197\t\197\000\000\000\000\000\000\000\000\000\000\t\197\000\000\t\193\000\000\t\197\000\000\000\000\t\193\000\000\000\000\t\193\000\000\000\000\000\000\t\197\t\197\t\197\000\000\t\197\t\197\t\193\000\000\000\000\000\000\t\193\003\241\t\193\000\000\000\000\t\197\003\241\000\000\000\000\003\241\000\000\000\000\t\197\000\000\t\193\000\000\000\000\000\000\000\000\003\241\t\193\000\000\000\000\003\241\t\193\003\241\000\000\000\000\000\000\000\000\000\000\000\000\t\193\000\000\000\000\t\193\000\000\003\241\021\138\000\000\t\193\t\193\000\242\003\241\000\000\000\000\000\000\000\000\000\000\t\193\t\193\000\000\000\000\000\000\000\000\003\241\t\193\000\000\003\241\000\000\t\193\000\000\000\000\003\241\003\241\003\241\000\000\000\000\000\000\000\000\t\193\t\193\t\193\000\000\t\193\t\193\000\000\000\000\000\000\003\241\000\000\000\000\000\000\003\241\000\000\t\193\000\000\000\000\000\000\000\000\000\000\000\000\t\193\003\241\003\241 \182\000\000\003\241\003\241\000\000\000\000\000\000\000\000\004\242\002\202\000\000\000\000\002\150\003\241\tv\000\000\000\000\004\218\000\000\021\234\003\241\000\000\000\000\000\000\000\000\003\241\000\000\001\214\000\000\t\150\000\000\003\241\000\000\000\000\005.\000\000\000\000\011\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\030\000\000\005:\000\000\000\000\000\000\000\000\000\000\005F\001\194\000\000\000\000\bq\bq\000\000\002\190\000\000\000\000\006R\000\000\000\000\000\000\006V\000\000\006^\000\000\012.\006\146\003&\000\000\000\000\bq\bq\bq\004\242\002\202\000\000\000\000\002\150\006\150\tv\bq\000\000\004\218\000\000\000\000\000\000\006\158\006\162\000\000\000\000\028\142\000\000\001\214\000\000\t\150\000\000\bq\bq\000\000\005.\000\000\bq\011\242\bq\bq\bq\000\000\000\000\000\000\030\234\bq\006\166\005:\000\000\000\000\000\000\000\000\003j\012\030\001\194\000\000\000\000\001\206\001\210\000\000\002\190\000\000\bq\006R\000\000\000\000\000\000\006V\000\000\006^\000\000\012.\006\146\006Z\000\000\000\000\001\214\001\254\001\234\004\242\002\202\000\000\000\000\002\150\006\150\tv\001\246\000\000\004\218\000\000\000\000\000\000\006\158\006\162\000\000\000\000\016\014\000\000\001\214\003\026\t\150\bq\001\250\002\166\000\000\005.\000\000\002\178\011\242\002\190\003\022\003\"\000\000\000\000\000\000\029&\003.\006\166\005:\000\000\000\000\000\000\000\000\003j\012\030\001\194\000\000\000\000\001\206\001\210\000\000\002\190\000\000\0032\006R\000\000\000\000\000\000\006V\000\000\006^\000\000\012.\006\146\000\000\000\000\000\000\001\214\001\254\000\000\004\242\002\202\000\000\000\000\002\150\006\150\031\222\000\000\000\000\004\218\000\000\000\000\000\000\006\158\006\162\000\000\000\000\016\014\000\000\001\214\003f\000\000\003j\001\250\002\182\000\000\005.\000\000\002\178\000\000\002\190\003\022\003\"\000\000\000\000\000\000\029\134\003.\006\166\005:\000\000\000\000\000\000\000\000\003j\005F\001\194\000\000\000\000\000\000\000\000\000\000\002\190\000\000\0032\006R\000\000\006Q\000\000\006V\000\000\006^\006\134\031\250\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000!2\000\000\006\150\000\000\000\000\000\000\000\000\000\000\007\241\000\000\006\158\006\162\000\000\007\"\004\242\002\202\000\000\000\000\002\150\007.\006\026\000\000 \002\004\218\000\000\000\000\000\000\000\000\007\241\000\000\000\000\000\000\000\000\001\214\000\000\006\166\016\158\000\000\000\000\000\000\005.\003j\004\242\002\202\000\000\000\000\002\150\000\000\016\162\000\000\000\000\004\218\000\000\005:\000\000\000\000\000\000\000\000\000\000\005F\001\194\001\214\000\000\000\000\000\000\000\000\002\190\000\000\005.\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\t:\006\146\000\000\000\000\005:\000\000\000\000\000\000\000\000\000\000\005F\001\194\000\000\006\150\000\000\000\000\000\000\002\190\000\000\000\000\006R\006\158\006\162\000\000\006V\000\000\006^\006\134\016\190\006\146\000\000\000\000\000\000\000\000\000\000\003\241\000\000\000\000\000\000\000\000\003\241\006\150\000\000\003\241\000\000\000\000\006\166\000\000\000\000\006\158\006\162\000\000\003j\003\241\000\000\000\000\000\000\003\241\000\000\003\241\000\000\016\198\000\000\000\000\003\241\000\000\000\000\003\241\000\000\000\000\000\000\003\241\021\138\000\000\006\166\000\000\000\000\003\241\000\000\000\000\003j\003\241\015\029\003\241\000\000\000\000\000\000\015\029\000\000\003\241\015\029\000\000\003\241\000\000\000\000\003\241\021\138\003\241\003\241\003\241\015\029\003\241\000\000\000\000\015\029\000\000\015\029\000\000\000\000\000\000\000\000\000\000\006\129\003\241\000\000\000\000\003\241\003\241\015\029\000\000\000\000\003\241\003\241\003\241\015\029\000\000\000\000\003\241\003\241 \230\000\000\003\241\003\241\000\000\000\000\000\000\015\029\003\241\000\000\015\029\000\000\003\241\000\000\000\000\015\029\015\029\000\000\000\000\021\234\003\241\000\000\003\241\003\241\024F\003\241\003\241\003\241\000\000\000\000\000\000\015\029\000\000\000\000\000\000\015\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\234\003\241\015\029\015\029\002\142\000\000\015\029\015\029\000\000\000\000\004\242\002\202\000\000\000\000\002\150\000\000\b\218\015\029\000\000\004\218\000\000!\182\000\000\000\000\015\029\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\015\029\005.\000\000\004\242\002\202\000\000\000\000\002\150\000\000\t\014\000\000\000\000\004\218\000\000\005:\000\000\000\000\000\000\000\000\000\000\005F\001\194\001\214\000\000\000\000\000\000\000\000\002\190\000\000\005.\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\b\246\006\146\000\000\000\000\005:\000\000\000\000\000\000\000\000\000\000\005F\001\194\000\000\006\150\000\000\000\000\000\000\002\190\000\000\000\000\006R\006\158\006\162\000\000\006V\000\000\006^\006\134\t*\006\146\000\000\000\000\000\000\b\254\000\000\000\000\004\242\002\202\000\000\000\000\002\150\006\150\tF\000\000\000\000\004\218\006\166\000\000\000\000\006\158\006\162\000\000\003j\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\t2\005.\000\000\000\000\006\217\000\000\000\000\000\000\000\000\006\217\000\000\000\000\006\217\006\166\005:\000\000\000\000\000\000\000\000\003j\005F\001\194\006\217\000\000\000\000\000\000\006\217\002\190\006\217\000\000\006R\000\000\000\000\000\000\006V\000\000\006^\006\134\tb\006\146\006\217\000\000\000\000\000\000\000\000\000\000\006\217\000\000\000\000\000\000\000\000\006\150\000\000\000\000\000\000\n\214\000\000\006\225\006\217\006\158\006\162\006\217\006\225\000\000\000\000\006\225\006\217\006\217\000\242\000\000\000\000\tj\000\000\000\000\000\000\006\225\000\000\000\000\000\000\006\225\000\000\006\225\006\217\006\217\006\166\000\000\006\217\000\000\000\000\000\000\003j\000\000\000\000\006\225\000\000\000\000\006\217\006\217\000\000\006\225\006\217\006\217\000\000\000\000\000\000\000\000\000\000\000\000\n\214\000\000\000\000\006\225\000\000\000\000\006\225\000\000\000\000\000\000\006\217\006\225\006\225\000\242\t\245\t\245\000\000\000\000\t\245\000\000\t\245\006\217\000\000\t\245\000\000\000\000\000\000\006\225\006\225\0222\000\000\006\225\000\000\t\245\000\000\000\000\000\000\000\000\000\000\000\000\t\245\006\225\006\225\007\157\000\000\006\225\006\225\000\000\007\157\000\000\000\000\007\157\000\000\t\245\000\000\000\000\000\000\000\000\000\000\t\245\t\245\007\157\000\000\006\225\000\000\007\157\t\245\007\157\000\000\t\245\000\000\000\000\000\000\t\245\006\225\t\245\t\245\t\245\t\245\007\157\000\000\000\000\000\000\000\000\000\000\007\157\000\000\000\000\000\000\000\000\t\245\000\000\000\000\000\000\000\000\000\000\000\000\007\157\t\245\t\245\007\157\000\000\000\000\000\000\000\000\007\157\007\157\000\242\000\000\b\169\t\250\000\000\000\000\000\000\b\169\000\000\000\000\b\169\000\000\000\000\000\000\007\157\000\000\t\245\000\000\007\157\000\000\b\169\000\000\t\245\000\000\b\169\000\000\b\169\000\000\007\157\007\157\028\026\000\000\007\157\007\157\000\000\000\000\000\000\000\000\b\169\000\000\000\000\000\000\000\000\007\157\b\169\nz\000\000\000\000\000\000\001\189\007\157\000\000\000\000\000\000\001\189\000\000\b\169\001\189\000\000\b\169\000\000\007\157\000\000\000\000\b\169\b\169\000\242\001\189\000\000\000\000\000\000\001\189\000\000\001\189\000\000\000\000\000\000\000\000\000\000\000\000\b\169\000\000\000\000\000\000\b\169\001\189\000\000\000\000\000\000\000\000\000\000\001\189\000\000\000\000\b\169\b\169\000\000\007\161\b\169\b\169\000\000\000\000\007\161\001\189\000\000\007\161\001\189\000\000\000\000\000\000\000\000\001\189\001\189\000\000\000\000\007\161\b\169\000\000\000\000\007\161\000\000\007\161\000\000\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\000\001\189\000\000\007\161\000\000\000\000\000\000\000\000\000\000\007\161\000\000\001\189\001\189\000\000\000\000\001\189\001\189\000\000\000\000\000\000\000\000\007\161\000\000\000\000\007\161\000\000\001\189\000\000\000\000\007\161\007\161\000\242\000\000\001\189\000\000\000\000\000\000\000\000\027\246\000\000\000\000\000\000\000\000\015\029\001\189\007\161\000\000\000\000\015\029\007\161\000\000\015\029\000\000\000\000\000\000\000\000\000\000\001\206\001\210\007\161\007\161\015\029\000\000\007\161\007\161\015\029\000\000\015\029\000\000\000\000\000\000\000\000\000\000\006\129\007\161\000\000\001\214\001\254\000\000\015\029\000\000\007\161\000\000\000\000\000\000\015\029\000\000\000\000\000\000\000\000\000\000\000\000\007\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\029\000\000\001\250\002\174\000\000\015\029\015\029\002\178\000\000\002\190\003\022\003\"\014\213\000\000\002\202\014\213\003.#f\021\142\000\000\000\000\015\029#j\000\000\000\000\014\213\000\000\000\000\000\000\000\000\000\000\014\213\000\000\0032\000\000\015\029\015\029\002\142\000\000\015\029\015\029\000\000\000\000\014\213\000\000\000\000\000\000\000\000\005\221\014\213\015\029\000\000\000\000\005\221!\238\000\000\005\221\015\029\001\006\001\194\000\000\014\213\000\000\000\000\014\213\000\000\005\221\000\000\015\029\014\213\005\221\000\000\005\221\000\000\000\000\000\000\000\000#n\000\000\000\000\000\000\000\000\000\000\005\221\005\221\014\213\005\221\t\250\005\221\014\213\005\221\005\221\000\000\000\000\005\221\000\000\000\000\000\000#r\014\213\014\213\005\221\005\221\014\213\005\221\005\221\000\000\005\221\005\221\000\000\005\221\002\238\000\242\000\000\000\000\000\000\000\000\000\000\000\000\005\221\000\000\014\213\005\221\000\000\000\000\005\221\005\221\000\000\005\221\nz\005\221\000\000\000\000\000\000\n\214\000\000\000\000\005\221\000\000\000\000\005\221\005\221\000\000\005\221\005\221\005\221\002\238\000\242\005\221\002\238\000\242\n\142\000\000\000\000\000\000\n&\000\000\000\000\000\000\000\000\000\000\005\221\005\221\000\000\005\221\005\221\001U\027\246\000\000\000\000\000\000\001U\000\000\005\221\001U\005\221\005\221\000\000\005\221\005\221\005\221\000\000\005\221\005\221\001U\000\000\001U\000\000\001U\000\000\001U\000\209\000\000\000\000\000\000\000\000\000\209\005\221\000\000\000\209\005\221\000\000\001U\000\000\000\000\000\000\000\000\000\000\001U\000\209\000\000\005\221\000\000\000\209\000\213\000\209\000\000\000\000\000\000\000\213\000\000\000\000\000\213\001U\000\000\000\000\000\000\000\209\001U\001U\000\242\000\000\000\213\000\209\000\000\000\000\000\213\000\000\000\213\000\000\000\000\000\000\000\000\000\000\001U\000\209\000\000\000\000\000\209\000\000\000\213\000\000\000\000\000\209\000\209\000\242\000\213\000\000\001U\001U\001U\000\000\001U\001U\000\000\000\000\000\000\000\000\000\213\000\209\000\000\000\213\000\000\000\209\000\000\000\000\000\213\000\213\000\242\000\000\001U\000\000\000\000\000\209\000\209\000\000\000\000\000\209\000\209\000\000\000\000\001U\000\213\000\000\000\000\000\000\000\213\000\000\001\206\002\146\000\000\000\000\002\150\000\000\000\000\000\209\000\213\000\213\000\000\000\000\000\213\000\213\000\000\000\000\000\000\000\000\000\209\001\214\001\254\001\234\002\154\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\000\000\000\000\000\000\002\158\002\166\000\000\001\206\001\210\002\178\000\000\002\190\003\022\003\"\b\165\000\000\000\000\000\000\027\206\b\165\027\210\000\000\b\165\000\000\000\000\000\000\001\214\001\254\000\000\000\000\000\000\000\000\b\165\000\000\000\000\0032\b\165\000\000\b\165\000\000\000\000\000\000\000\000\000\000\006\162\000\000\000\000\000\000\000\000\000\000\b\165\000\000\001\250\002\182\000\000\027\222\b\165\002\178\000\000\002\190\003\022\003\"\000\000\000\000\000\000\000\000\003.\000\000\b\165\000\000\000\000\b\165\027\226\007\149\000\000\000\000\b\165\b\165\007\149\000\000\000\000\007\149\000\000\0032\000\000\000\000\006U\000\000\024\"\000\000\000\000\007\149\b\165\000\000\000\000\007\149\b\165\007\149\000\000\000\000\000\000\000\000\000\000!2\000\000\000\000\b\165\b\165\023v\007\149\b\165\b\165\000\000\000\000\000\000\007\149\006\233\t\250\000\000\000\000\000\000\006\233\000\000\000\000\006\233\000\000\000\000\007\149\b\165\000\000\007\149\000\000\000\000\000\000\006\233\007\149\007\149\000\000\006\233\000\000\006\233\000\000\000\000\001\206\002\146\000\000\000\000\002\150\000\000\000\000\000\000\007\149\006\233\000\000\000\000\007\149\000\000\000\000\006\233\nz\000\000\000\000\001\214\001\254\001\234\007\149\007\149\000\000\000\000\007\149\007\149\000\000\001\246\006\233\000\000\000\000\000\000\000\000\006\233\006\233\000\242\000\000\000\000\000\000\000\000\000\000\000\000\007\149\002\158\002\166\000\000\000\000\000\000\002\178\006\233\002\190\003\022\003\"\005\189\000\000\000\000\000\000\027\206\005\189!\154\000\000\005\189\000\000\006\233\006\233\000\000\000\000\006\233\006\233\000\000\000\000\005\189\000\000\000\000\0032\005\189\000\000\005\189\000\000\000\000\000\000\000\000\000\000\006\162\000\000\006\233\000\000\000\000\000\000\005\189\000\000\000\000\000\000\000\000!\166\005\189\005\165\000\000\000\000\000\000\000\000\005\165\000\000\000\000\005\165\000\000\000\000\000\000\000\000\000\000\005\189\027\226\000\000\000\000\005\165\005\189\000\000\000\000\005\165\005\213\005\165\000\000\000\000\000\000\005\213\000\000\000\000\005\213\000\000\000\000\000\000\005\189\005\165\000\000\000\000\000\000\000\000\005\213\005\165\000\000\000\000\005\213\000\000\005\213\000\000\005\189\005\189\000\000\000\000\005\189\005\189\000\000\000\000\005\165\000\000\005\213\000\000\000\000\005\165\000\000\000\000\005\213\000\000\000\000\000\000\000\000\000\000\005\189\000\000\000\000\000\000\000\000\005\241\000\000\005\165\000\000\005\213\000\250\024\242\tA\002\206\005\213\tA\000\000\000\000\000\000\000\000\000\000\005\165\005\165\005\134\000\000\005\165\005\165\005\241\000\000\005\138\005\213\tA\tA\000\000\tA\tA\000\000\000\000\000\000\000\000\000\000\005\150\000\000\005\165\005\213\005\213\000\000\023b\005\213\005\213\004\169\000\000\000\000\004\169\027:\tA\000\000\000\000\000\000\0316\000\000\000\000\023\198\000\000\000\000\000\000\005\213\023\222\000\000\004\169\004\169\000\000\004\169\004\169\000\000\000\000\tA\027\186\000\000\000\000\000\000\000\000\000\000\023\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\169\000\000\000\000\000\000\023\250\0246\000\000\000\000\005\241\005\241\000\000\000\000\000\000\tA\000\000\tA\000\000\000\000\000\000\000\000\000\000\000\242\000\000\000\000\t]\000\000\028v\t]\tA\000\000\000\000\007\142\tA\000\000\000\000\000\000\tA\000\000\tA\000\000\000\000\000\000\tA\t]\t]\000\000\t]\t]\000\000\000\000\000\000\004\169\000\000\004\169\000\000\000\000\000\000\000\000\000\000\004\185\000\000\000\000\004\185\000\000\000\000\000\000\004\169\t]\000\000\007\142\004\169\000\000\000\000\000\000\004\169\000\000\004\169\000\000\004\185\004\185\004\169\004\185\004\185\000\000\000\000\000\000\000\000\000\000\000\242\000\000\000\000\000\000\005\229\000\000\000\000\000\000\000\000\000\250\000\000\000\000\002&\000\000\004\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024v\000\000\000\000\000\000\005\229\000\000\005\138\000\000\t]\000\000\t]\000\000\000\000\000\242\000\000\000\000\000\000\000\000\024z\000\000\000\000\000\000\000\000\007\210\024\162\000\000\007\142\t]\000\000\000\000\000\000\t]\000\000\t]\000\000\000\000\000\000\t]\000\000\023\198\000\000\000\000\000\000\004\185\023\222\004\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\185\000\000\025B\007\142\004\185\000\000\004\217\000\000\004\185\004\217\004\185\000\000\000\000\000\000\004\185\000\000\023\250\025V\000\000\000\000\005\229\005\229\000\000\000\000\000\000\004\217\004\217\000\000\004\217\004\217\000\000\000\000\004\201\000\000\000\000\004\201\000\000\000\000\025f\000\000\015\221\015\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\217\000\000\004\201\004\201\000\000\004\201\004\201\000\000\000\000\000\000\015\221\015\221\015\221\n\014\000\000\000\000\000\000\000\000\000\000\000\000\015\221\000\242\000\000\000\000\000\000\000\000\004\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\221\015\221\000\000\000\000\000\000\015\221\000\000\015\221\015\221\015\221\000\000\000\242\000\000\000\000\015\221\004\217\000\000\004\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\004\217\015\221\000\000\007\142\004\217\000\000\000\000\000\000\004\217\000\000\004\217\004\201\000\000\004\201\004\217\001\214\001\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\004\201\000\000\000\000\007\142\004\201\000\000\000\000\000\000\004\201\000\000\004\201\000\000\000\000\000\000\004\201\001\250\002\174\001\214\001\254\000\000\002\178\000\000\002\190\003\022\003\"\000\000\000\000\000\000\000\000\003.\000\000\021\142\000\000\000\000\001\206\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\003\198\000\000\0032\000\000\002\178\000\000\002\190\003\022\003\"\001\214\001\254\000\000\000\000\003.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\001\250\003\230\000\000\000\000\000\000\002\178\000\000\002\190\003\022\003\"\000\000\000\000\000\000\000\000\003.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0032")) and lhs = - (8, "\014\r\012\011\n\t\b\007\006\005\004\003\002\001\000\231\231\230\230\229\228\228\227\227\227\227\227\227\227\227\227\227\226\226\225\224\223\223\223\223\223\223\223\223\222\222\222\222\222\222\222\222\221\221\221\220\220\219\218\218\218\217\217\216\216\216\216\216\216\215\215\215\215\215\215\215\215\214\214\214\214\214\214\214\214\213\213\213\213\212\211\210\210\210\210\209\209\209\209\208\208\208\207\207\207\207\206\205\205\205\204\204\203\203\202\202\202\201\201\201\201\201\201\201\201\201\200\200\199\199\198\198\197\196\195\194\193\193\192\192\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\191\190\190\189\188\188\188\188\187\187\187\187\186\186\185\185\185\185\185\185\184\183\182\182\181\181\180\180\179\178\178\177\176\176\175\174\173\173\173\172\172\171\170\170\170\170\170\170\169\169\169\169\169\169\169\169\168\168\167\167\167\167\167\167\166\166\165\165\165\164\164\163\163\163\163\162\162\161\161\160\160\159\159\158\158\157\157\156\156\155\155\154\154\153\153\152\152\152\151\151\151\151\150\150\149\149\148\148\147\147\147\147\147\146\146\146\146\145\145\145\144\144\144\144\144\144\144\143\143\143\143\143\143\143\142\142\141\141\140\140\140\140\140\140\139\139\138\138\137\137\136\136\135\135\135\134\133\133\133\133\132\132\132\131\131\131\131\131\131\131\131\131\131\130\130\129\129\128\128\128\128\128\128\128\128\128\128\128\128\128\127~}||{{{{{zyyxxwwwwwwwwwwwwwwvvuuttsssssssssssssssssssssssssssssssrrqqppoonnmmlllkkjjiihhggffffffffffffffffffedcba`_^]\\[ZZZZZZZZZZZYYYXXXWWWWWVVVVVVVVVUUTTTTTSSRRQPOONNNNNMMLLKKKJJJJJJIIIHHGGFFEEDDCCBBBAA@@??>>==<<;;::::::998877777766655544433210000000000000000000/////.......-------------------------------------------------------------------,,++++++++++++++++++++++***************************************************))((''&&&&&&&&&&&&&&&&%%$$#######\"\"\"\"!! \031\031\030\029\028\028\028\027\027\026\026\026\026\026\026\026\026\026\026\025\025\024\024\024\024\023\023\022\021\021\021\021\021\020\019\019\018\018\018\017\017\017\016\016\016\016\016\016\015\015") + (8, "\014\r\012\011\n\t\b\007\006\005\004\003\002\001\000\235\235\234\234\233\232\232\231\231\231\231\231\231\231\231\231\231\230\230\229\228\227\227\227\227\227\227\227\227\226\226\226\226\226\226\226\226\225\225\225\224\224\223\222\222\222\221\221\220\220\220\220\220\220\219\219\219\219\219\219\219\219\218\218\218\218\218\218\218\218\217\217\217\217\216\215\214\214\214\214\213\213\213\213\212\212\212\211\211\211\211\210\209\209\209\208\208\207\207\206\206\206\205\205\205\205\205\205\205\205\205\204\204\203\203\202\202\201\200\199\198\197\197\196\196\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\195\194\194\193\192\192\192\192\191\191\191\191\191\191\190\190\189\189\189\189\189\189\188\187\186\186\185\185\184\184\183\182\182\181\180\180\179\178\177\177\177\176\176\175\174\174\174\174\174\174\173\173\173\173\173\173\173\173\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\171\171\171\171\171\171\171\171\171\171\171\171\171\171\171\171\171\171\171\171\171\170\169\168\168\167\167\167\167\167\167\166\166\165\165\165\164\164\163\163\163\163\162\162\161\161\160\160\159\159\158\158\157\157\156\156\155\155\154\154\153\153\152\152\152\151\151\151\151\150\150\149\149\148\148\147\147\147\147\147\146\146\146\146\145\145\145\144\144\144\144\144\144\144\143\143\143\143\143\143\143\142\142\141\141\140\140\140\140\140\140\139\139\138\138\137\137\136\136\135\135\135\134\133\133\133\133\132\132\132\131\131\131\131\131\131\131\131\131\131\130\130\129\129\128\128\128\128\128\128\128\128\128\128\128\128\128\127~}||{{{{{zyyxxwwwwwwwwwwwwwwvvuuttsssssssssssssssssssssssssssssssrrqqppoonnmmlllkkjjiihhggffffffffffffffffffedcba`_^]\\[ZZZZZZZZZZZYYYYYXXXXXXXXXWWVVVVVUUTTSRQQPPPPPOONNMMMLLLLLLKKKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIIIIIIHHHHHHGGFFEEDDCCBBAAA@@??>>==<<;;::::998877777766655544433210000000000000000000/////.......-------------------------------------------------------------------,,++++++++++++++++++++++****************************************************))((''&&&&&&&&&&&&&&&&%%$$#######\"\"\"\"!! \031\031\030\029\028\028\028\027\027\026\026\026\026\026\026\026\026\026\026\025\025\024\024\024\024\023\023\022\021\021\021\021\021\020\019\019\018\018\018\017\017\017\016\016\016\016\016\016\015\015") and goto = - ((16, "\001\164\001{\000G\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\000\000\000\000\000\239\000\006\000)\000\199\000\219\000j\000\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\000~\000\000\000\000\000\000\000\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 R\000\000\000\000\000\000\000\226\000\000\000\000\000\000\000\000\000\000\000\000\000\0009p\0018\000\000\001\026\000\145\007\016\000\000\000\000\000\000\000{.\150\001*\000\200\005\150\000\000\000\000\000\000\007\"\000\000\000\000\000\222\000\000\000\000\000\000\000\000\002\174\000\000\001\142\000\000\000\000\000\000\000\000\000\000\0006\000\000\001p\002\218\b\184\000\000\000\000\n69p\000\000\000\000\019F\000\000\016\238\000\0009\186\000\214\003\006\000\000\000\000\002t\001\208\007p\b\002\001\230\002\218\003\132\000%\002\216\0008\002\200\002*\r\174\000\000\007\200\003\002\002@\003:L\180\000\000\000\000\000\000\000\000\000\000\000\000\000\000:F\000\000\003\140\002\158\004.\000\000\000\000\000\000\000\000\015\234\000\000\000\000\003\168\003 \004H\0064\007\160\000\000\000\000\000\000\003\168\0042\004\228\004\130\000\000\000\000\004\176\004\236:V\004F\005\014\001\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\136\000\000\000\000\000\000\027\018\014\002\004\146\005\224\0146\004\210\007\200 \246\000\000:\190\001\184;\020;b\000\000\001F\000\000\000\000\000\000\000\000\005\188L\150\005\200\000\000\011\004\005\204\000\000\0110\r\170\000\203\000\000\000\208\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\190\005J\000\000\000\000\000\000\027\180\000\000\nb\000\000\000\000\005DM`U\248\000\000ZR\000\000\000\000\000\000\000\000\000\000\000\000\002\182\028j\002\182\000y\000\000\000\000\000\000\005D\000\000\000\000\000\000\000\000\005\174\000\000\000\000\002\182\000\000\000\000\000\000\000\000\000\000\015\026\000\000\006\n\0066\000\000Mx\006x,\128\000\000\000\000\000\000\000\000\005D\000\000\000\000\000\000\011\234\000\000\000\000\000\000\000\000\000\000\000\000\001\004\0066\000\000\000\000\000\000\005D\006\158M\172\005\232\006\168\rD\000\000\004\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\220\000\000\000\000\000\000\000\000\007\005D\000\000\000\000\000\000\000\000\000\000[\192\000\000\000\000\000\000\001*\018$\000\000\000\000\000\000\000\000>@\n\026\t\218#\192\000\000[\208\000\000\000\000\000\000\000\000\000\000\n\n\018\216\000\000\000\000\n >J\nd\t\220#\206\000\000\n >\148\nz\t\240$\128\000\000\n \000\000\\\000\000\000>\158\n\128\t\246$\142\000\000\n \019$\005\182\019\170\000\000\000\000?\202\n\130\t\248%\"\000\000\n ?\212\n\148\t\254%V\000\000\n @\030\n\156\n\004%`\000\000\n @(\n\166\n\006%\148\000\000\n @\202\n\182\n\016&\030\000\000\n A\138\n\186\n\028&(\000\000\n A\178\n\192\n\"&\\\000\000\n A\240\n\194\n$&\230\000\000\n BT\n\196\n&'$\000\000\n B\176\n\200\nL'.\000\000\n B\196\n\210\nV'\230\000\000\n Cj\n\222\nX(\134\000\000\n C\184\n\224\n\162(\166\000\000\n C\240\n\232\n\166(\186\000\000\n D>\n\238\n\178(\242\000\000\n D`\011\000\n\180)\140\000\000\n D\228\011\030\n\210*D\000\000\n ET\0110\n\220*^\000\000\n E\204\011N\n\226*\144\000\000\n E\244\011V\011\b+\006\000\000\n \011\014+H\019\190\020\014\000\000D\248\011\250\000\000R|\005D\020\176\000\000\000\000\011\134\000\000R\224\005D\021\020\000\000\000\000\021p\000\000\000\000\001T\000\000\000\000\021\188\000\000\000\000\000\000\000\000S8\005D\022v\000\000\011:\022\170\000\000S\136\000\000\006(T\004\000\000\006(T:\000\000\006(\004h\000\000\000\000\000\000\000\000\000\000T\164\006(\000\000\003\n\003\130\000\000\000\000\000\000\n \022\210\000\000\000\000\000\000\023\030\000\000\000\000\000\000\000\000\000\000+d\000\000\000\000\000\000\n ,\024\000\000,\204\000\000\000\000\000\000,\238\000\000\000\000\000\000\000\000\\\026\000\000\000\000-\022\000\000\000\000\000\000F\154\011t\011 -\"\000\000\n -\154\000\000\000\000\000\000F\238\011\132\011&. \000\000\n .\188\000\000\000\000\000\000F\248\011\134\0112.\196\000\000\n \002,\024\012\000\000\000\000G\002\011\138\011@/*\000\000\n \0244\000\000\000\000G\194\011\146\011H/^\000\000\n \024\128\000\000\000\000H\000\011\148\011J/\202\000\000\n \000\000\000\000/\"\000\000\000\000H\172\011\156\011L0\130\000\000\n 0\164\000\000\000\000H\192\011\160\011N0\198\000\000\n 1P\000\000\000\000H\212\011\164\011P1\166\000\000\n \000\000Iz\011\190\011f2\030\000\000\n \000\000\023\216\000\000\000\000\n \000\000\000\000\000\0002f\000\000\000\0002\142\000\000\000\000\011\206\000\000\000\000\024\220\000\000\025\150\000\000\000\000\000\000\n \000\000\000\000\025\226\000\000\025\234\000\000\000\000\000\000\000\000\000\000I\206\011\216\011h2\178\000\000I\226\012\n\011l3t\000\000\n \n J\130\012\016\011p3\152\000\000\n \000\000\011:\026>\000\000\000\000\026\138\000\000J\142\000\000\000\000C\192\000\000\000\000\000\00044\000\000\000\000\000\000\000\0004>\000\000\000\000\000\000\000\000\rL\000\000\000\000\000\000T\176\000\000\000N\000\000\004 \012\228\000\000\003$\000\000\000\000\000\000\000\000\000\000\000\000\003\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012>\011v4l\000\000\n \000\000\rx\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011x\bJ\000\133\027t\000\000\012Z\011\154\r\002\000Y\b\176\000\133+P\000\000\003\028\t\138\000\133\000\000\027~\000\000\004\006\000\000\012\132\011\156\004\198\000\000\000\000\000\000\000\000\000\000\012\164\002b\001(\000\000\000\000\000\000J\208\000\000Y\242\000\000\011\170\000\000\011\230\000\000\000\000\000\000\000\000\005\\\000\000\000\000\000\0006\178\002\182\000\000\002\182(D\000\000\005`\000\000A&\002\182\002\182\000\000G8\002\182\002\182\012\002\000\000\028>\000\000\000\000\012\004\r\144\000\0004\172\003\218\000\000\000\000\000\000\000\000\000\000\000\000\012\168\012\b5@\000\000\n \000\000\000\000\000\000\000\000\000\000\012\188\012\n\t\148\000\133\000\000+R\000\000\003\028\000\000\014\014\000\000\000\000\000\000\000\000\000\0005\228\000\000\000\000\000\000\000\000\012\210\012\0165\254\000\000\000\000\000\0003*\000\000\003\028\000\0005\028\000\000\003\028\000\0007\b\003\028\000\000\n \000\000\000\0007\\\000\000\003\028\000\000=\246\000\000\003\028\000\000>f\003\028\000\000\000\133\000\000\012\022\t\204\002\b\000\000\012\224\012\252\012 \r$\r\216?\242\003\028\005\242\000\000\012*\r\176\r\178\006\136\006\224\r\188\0120\014\020\006\254\0078\r\226\000\000\000\000\007\026\b\226\000\000\007:\003fT\196\006(\028H\000\000\007\246\001D\r\150\0126\t\226\004\252\000\000\r\210\012@\006\242\000\0005\230\000\000T\250\005D\000\000\014x\014\142\000\000\tT\000\000\005D\014\b\012B\007\b\014N\000\223\000\000\000\000\000\000\000\000\012l\t\206\000\000\012\134\t\230\000\000\b|\023\244\0146\014X\012\136\007\232\n.\000\000\012\154\b\164\nx\000\000\014z\014~\012\188\014\208\r\216D\182\003\028\000\000\012\194\0156\000\000\t\b\000\000\n\130\000\000\015<\000\000O\222\003\230\015\b\012\196\015B\000\000P\232\004X\015\028\000\000\000\000\001\004\002\230\000\000\011\016\000\000T\134\003\028\011b\000\000\005R\000\000\000\000\014\210\012\216\\ \006\188\000\000\014\212\012\224\b\014\014N\014\220\014\228\012\230\016R\000\000\014\248\0014\000\000\000\000\000\000\000\000\0012\012\240\014\206U\018\005D\000\000\002\222\r\002\015\140\000\000\000\000\000\000\000\000\000\000\000\000U$\b\000\000\000\r\n\015\232\000\000\000\000\000\000\000\000\000\000\000\0006D\012\130\000\000\r\026\003N\000\000\r \r2\0034\000\000\006\160J\212\000\000\001\012\000\000U\146\005D\005D\000\000\000\000\b \000\000\004\156\000\000\007l\b \b \000\000\r\000\000\000\000\014,\000\000\002\216\000\000\000\000\000\000\000\000\000\000\000\0007\128\000\000\000\0007\1888$\0162\000\000W\138\005D\030\254\000\000\000\000\0312\000\000\000\000\014\018\031<\014R\000\000\014.\014<\000\191\000\161\014@\b\248\014P\016\1408~\014\184\000\000\014Z\014\\\bv\000\000\000\133K\144\000\000\002\208\000\000\014`\004\230@L\002R\015^\002\142\000\000:\n\023\216\000\000\005\140\000\000\000\000\005\140\000\000\000\000\005\140\t\184\000\000\003\174\005\140\016\1468\202\014\200\000\000\005\140\000\000\000\000W\182\000\000\000\000\000\000\005\140\000\000\000\000\014\204\000\000\005\228\007\220\014\228\000\000\014fK\164\014\250\000\000\000\000\000\000\000\000\015\026\000\000\000\000\005x\000\000\005\140X\n\000\000\007F\005\140Z.\000\000\015\028\015\236\014j\017\012\015\182\000\000Z\152\015&\016\000\000\000\000\000\000\000\000T\006\240\000\000\000\000\000\000\000\000\000\000\000\000\n\n\015(\000\000\016\014\000\000\000\000\000\000\000\000\015*\003\130\000\000\000\000\000\000\n\n\000\000\000\000\000\000\000\000\015,\029\208\000\000\000\000\000\000\000\000\000\000\000\133\003\028\000\000\000\000\006(\000\000XL\005D\000\000\007\138\000\000\000\000\000\000\000\0009@\000\000\000\000\000\000\000\000\000\000\000\000\016\170\000\242\b|\015~\002\140\014\164\000\000\002V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\144\005\182\014\166\000\000\b\006\017\014\016\190\015J\000\000\000\000\016\178\003\192\003\182\000\000\000\000\000\000\014\168\000\000\014\172\027F\000\000\000\000\002\182\030\142\000\000\000\000\000\000\000\000\000\000[R\000\000\000\000\b\212\004\210\000\000\000\000Xr\005D\005DX\138\005D\007\222\000\000\000\000\000\000\005D\000\000\000\000\tf\016\198\015`\000\000\000\000\016\188\000\188\004&\000\000\000\000\000\000\000\000\b\234\017\014\t\244\016\204\015h\000\000\000\000\016\194\003\176\004T\000\000\000\000\000\000\000\000\003\028\000\000\015r\000\000\000\000\000\000\031\252\000\000 \006\000\000\000\000\000\000\000\000\000\000\000\000YJ\000\000\000\000\000\000\001\004\000\028\000\000\000\000\000\000\000\000\000\000\003\012\000\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005<\000\000\000\000\000\000LR\000\000\005D\000\000\r`\000\000\000\000\000\000\002\012\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\003\000\000\000\133\000\000\r&\000\000\003\028\000\000\006\"\000\000\000\000\000\000L\154\006(\000\000\000\000\002\004\000\000\000\000\000\000\000\000\003\238\004r\015\252\000\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\130\000\000\015v\000\000\000\000\000\000\000\000\005F\007\"\000\r\003\"\000\000\000\000\015\142\021\172\000\000\000\000\000\000\015\156?f\000\000\000\000\000\000\000\000"), (16, "\007\028\002\025\002D\002E\001u\000\238\002\003\0007\000\242\000\243\000;\b\002\002E\001u\007\028\003\156\002\007\002\161\007\029\007,\002\011\007\031\001\029\005d\000\238\002\166\000\242\000\242\000\243\b\017\007 \007-\b\018\0007\001\022\007\031\0021\007\178\002\192\000\238\001\029\001 \000\242\000\243\007 \0007\006\165\000@\007\028\002\026\002D\002E\001u\000\151\000\238\006\217\000\160\000\242\000\243\006\167\007!\002\012\007\028\003\156\0070\002\161\007\029\007,\000\238\007\031\006\217\000\242\000\243\002\166\007!\001\022\000q\001u\007 \007-\007\029\001\029\001 \007\031\000\131\006\217\002\192\005$\006\219\004\165\000\244\004o\007 \007\002\007\230\000\136\005g\007\"\001\141\006\217\000?\002&\002\198\006\219\006\220\000\245\007\226\007#\007!\006\222\001!\007\"\0070\007\n\002H\000\245\002\200\000\242\006\219\006\220\007\005\007#\007!\b\003\006\222\002\200\000\242\000\245\006\245\000m\007\231\0071\006\219\0023\006\220\007Q\000\242\000\151\007\007\006\222\000\156\b\020\004\168\006\238\007\227\007\"\0072\000\242\006\220\0007\002\198\001;\000\245\006\222\007\195\007#\007&\006\229\0022\007\"\007%\007(\002H\000\245\002\200\000\242\007\b\007\153\002\207\007#\007&\002\208\000\157\000\238\007*\007(\000\242\001\b\002\201\0071\000\151\000\\\007\028\000\156\002D\002E\001u\002\222\007*\001\141\002\203\000:\007+\007$\0072\007Z\006\130\0024\001d\002\161\007\029\007,\003{\007\031\007&\007\176\007+\002\166\007%\007(\004p\002\224\007 \007-\007\150\005\177\002\207\0009\007&\002\208\002\192\000\238\007*\007(\000\242\001\b\002\201\001\178\001u\000=\007\028\007\196\002D\002E\001u\002\222\007*\001\141\002\203\001\025\007+\000`\007!\001\207\001u\001\029\0070\002\161\007\029\007\184\000d\007\031\001g\007O\007+\002\166\000\139\002$\001\244\002\224\007 \007-\005\156\001v\002Y\007\197\001x\001y\002\192\001\022\007\204\001\029\004\182\007R\003|\001\029\001 \007\156\007\157\007\"\007\246\002E\001u\003\169\002\198\001{\000\242\001\b\001\022\007#\007!\001t\001u\000y\001\029\001 \002H\000\238\002\200\000\242\000\242\001\b\006^\004\218\007^\007_\004Q\003\150\003\151\001\t\007\205\001v\001\135\0071\001x\001y\005\158\007`\007a\001\022\003\186\004\193\004\195\004\197\000\245\001\029\0011\007\"\0072\007b\004\218\006\132\002\198\000\176\001\012\001%\000\128\007#\007&\007\206\000\130\003\156\001\142\007(\002H\005\221\002\200\000\242\000\138\007\248\002\207\005\225\001\235\002\208\001~\001\136\007*\000\242\007\207\007\222\002\201\0071\0021\000\238\005\226\004\198\000\242\001\b\005\250\002\222\000\155\001\141\002\203\002\r\007+\001\202\0072\001<\001\022\000\154\003\156\006\172\004T\004Y\001\029\0011\007&\0073\000\181\007\186\001\142\007(\007\249\002\224\002\200\000\242\000\185\007\223\002\207\000\245\001\012\002\208\001~\001\029\007*\000\242\0007\007\028\002\201\002D\002E\001u\003\248\005(\007\202\000\242\001\b\002\222\001\139\001\141\002\203\007\028\007+\001*\002\161\007\029\007,\001\151\007\031\001\141\001|\000\238\002\166\000\191\000\242\000\243\b\017\007 \007-\b\018\001+\002\224\007\031\006\176\000\196\002\192\001\029\0011\001|\004\021\002\019\007 \007[\000\242\004t\007\028\000\245\002D\002E\001u\005d\000\238\006\217\000\242\000\242\000\243\001\139\007!\002\r\007\028\003\156\007p\002\161\007\029\007,\001\151\007\031\001\141\001|\003\156\002\166\007!\001\022\007\\\0022\007 \007-\007\029\001\029\0011\007\031\000\209\006\217\002\192\000\238\006\219\007]\000\242\000\243\007 \0013\000\245\002&\0014\007\"\005\152\0015\0016\000\242\002\198\004\201\006\220\000\245\000\180\007#\007!\006\222\005\242\007\"\0075\006\226\002H\000\186\002\200\000\242\006\219\004|\001u\007#\007!\003\156\007>\004\202\007X\0023\001\141\000\238\000\242\0071\000\242\001\b\006\220\003\158\005\245\005\216\007\167\006\222\000\242\b\019\006M\006\223\005\128\007\"\0072\007n\000\190\003\156\002\198\001\022\000\245\003{\005\247\007#\007&\001\029\001 \007\"\007%\007(\002H\007\203\002\200\000\242\004p\003\156\002\207\007#\007&\002\208\006\212\003\156\007*\007(\005\248\000\195\002\201\0071\003\148\001u\007\028\000\188\002D\002E\001u\002\222\007*\001\141\002\203\0024\007+\007/\0072\003\157\b\005\b\006\000\238\002\161\b\b\000\242\000\243\007\031\007&\003\156\007+\002\166\007%\007(\001p\002\224\007 \b\n\005\225\002\006\002\207\000\218\007&\002\208\002\192\007o\007*\007(\007G\004q\002\201\005\226\003\156\006\217\003\156\005\233\002D\002E\001u\002\222\007*\001\141\002\203\004\224\007+\004\169\007!\001t\001u\005\140\000\208\002\161\007\156\007\157\006T\006U\007\\\006M\007+\002\166\007^\007_\000\212\002\224\005%\004\249\006\219\001v\002z\007]\001x\001y\002\192\007`\007a\006e\002&\006^\004\218\006^\004\218\007\154\006\220\007\"\002\021\007b\004\218\006\222\002\198\000\245\001\029\006\233\007\028\007#\002D\002E\001u\b\025\004\168\002&\002H\000\220\002\200\000\242\007\168\005#\005\146\b\017\0023\002\161\b\018\000\242\007\155\007\031\b\r\001%\003\156\002\166\005\249\001\022\002\006\005\230\007 \b\026\000\242\001\029\0011\001\237\002*\000m\002\192\0023\0072\000\227\000\242\007\155\002\198\0021\000\151\002&\007\158\002\000\007&\000\235\005\245\004\198\001}\007(\002H\001\022\002\200\000\242\007!\002\024\002\207\001\029\001 \002\208\001~\001\029\007*\000\242\005\247\006\137\002\201\006T\006U\007\210\0025\000\245\0007\0023\0024\002\222\000\242\001\141\002\203\002\006\007+\000\228\002\204\000\252\001\239\000\233\005\248\002\031\006]\001\229\005N\007\"\006^\004\218\002\007\006\215\002\198\0024\002\011\002\224\001\029\007#\000\236\005d\002\207\001*\000\242\002\208\002H\004\182\002\200\000\242\005\160\007\028\002\201\002D\002E\001u\004\178\004\218\006\248\b\030\001+\002\222\001\139\001\141\002\203\007\132\001\029\0011\002\161\007\029\007;\001\140\007\031\001\141\001|\0024\002\166\002\012\0072\003\156\001i\007 \007-\002\r\006\228\002\224\007\t\000\245\007&\002\192\001\016\000\245\001\019\007(\001$\002\014\004\196\004\195\004\197\0022\002\207\000\246\005d\002\208\005\158\000\242\007*\002&\000\245\006\141\002\201\007!\001E\007\005\007\211\007\238\001\141\001t\001u\002\222\0013\001\141\002\203\0014\007+\000\238\0015\0016\000\242\000\243\004\206\007\007\002D\002E\001u\001@\002'\001v\001\135\0023\001x\001y\000\242\002\224\001D\000\253\001Q\007\239\007\"\005R\001u\0051\004\209\002\198\001f\004m\006\217\002\007\007#\007\b\004<\002\011\004u\001\029\002&\002H\001W\002\200\000\242\000\245\007\028\006\224\002D\002E\001u\007d\000\151\001\141\000\161\002\000\003\156\001\143\0071\001\144\002d\b\017\004\130\002\161\b\018\006\219\001\197\007\031\001l\002Q\002\232\002\166\0023\0072\003\156\000\242\007 \b\021\002\012\0024\0007\006\220\0056\007&\002\192\001\195\006\222\001\237\007(\000\245\006\251\000\151\001\142\007f\002\000\002\207\001\022\001U\002\208\001\132\004\182\007*\001\029\001 \001~\002\201\007!\000\242\002G\007\028\000\245\002D\002E\001u\002\222\002\142\001\141\002\203\003\156\007+\004y\001m\002\200\000\242\001\b\001\150\002\161\007\029\005\165\001\156\007\031\002D\002E\001u\002\166\004\168\0024\004\182\002\224\007 \0077\005;\001\239\007\"\001\155\007\172\0057\002\192\002\198\006F\004\195\004\197\002\007\007#\004\239\005@\002\011\004p\001\029\005\225\002H\001\201\002\200\000\242\000\151\000\245\000\183\002\000\001\139\007!\007k\001\133\005\226\b\024\0007\001\213\005\227\001\151\000\238\001\141\001|\000\242\000\243\001\218\002\201\001\224\006Z\004\195\004\197\000\245\005<\004\226\0072\002\202\004\168\001\141\002\203\002\012\001\022\002\006\004\219\004\182\007&\002\r\001\029\001 \007\"\007(\004\168\006\217\000\151\002\198\001\243\002\000\002\207\002\014\007#\002\208\003\156\006)\007*\005a\004\218\002H\002\201\002\200\000\242\007H\004\149\001%\006\252\002G\001&\002\222\003\156\001\141\002\203\001\223\007+\000\245\007:\001\226\006\219\002H\004\182\002\200\000\242\006*\006k\006+\006b\004\195\004\197\000\245\007\005\0072\001(\002\224\006\220\001%\005s\005\225\001&\006\222\005C\007&\001\029\007\014\001t\001u\007(\001\234\007\007\007\133\005\226\001\022\002&\002\207\005\232\006,\002\208\001\029\0011\007*\007\164\003\156\001(\002\201\001v\002z\005\198\001x\001y\007\140\004\195\004\197\002\222\003\156\001\141\002\203\007\b\007+\001.\0007\006M\004\151\005\234\002\201\0023\000\245\001%\000\242\002\029\001&\001\249\006-\002\202\001*\001\141\002\203\002\224\000\151\002?\0067\002\000\006.\006/\002&\0060\001\022\006\207\003\156\001.\000\242\001+\001\029\001 \001(\002B\000\245\001\029\0011\000\151\006\224\006A\002\000\001%\001*\007\145\001&\002P\006l\005\169\004\218\005w\006M\004\159\005\251\005I\0023\001\029\001@\000\242\001\251\001+\006J\004\218\001}\002\n\006\003\001\029\0011\0024\001(\002_\0062\002\028\005\228\001\022\001~\0064\006>\000\242\001.\001\029\0011\001=\004\142\003\156\001\022\000\245\006M\005\225\006h\0013\001\029\0011\0014\001*\006P\0015\0016\006m\005A\005\134\005\226\000\245\007V\004\218\006\002\001\029\006i\006T\006U\007\015\001+\001=\001%\000\245\001.\001&\001\029\0011\0024\0013\002b\0017\0014\005\228\001A\0015\0016\006V\006f\001*\007\147\002&\006^\004\218\004\138\005\228\002&\000\245\001\139\001(\002h\002>\002A\002\133\003\156\001%\001+\001\140\001&\001\141\001|\0017\001\029\0011\001A\005\\\003\156\006M\006T\006U\004\164\007\017\001=\0023\002&\004\243\000\242\001%\0023\002\138\0013\000\242\001(\0014\002\145\002&\0015\0016\006V\006f\002O\002\150\006\199\006^\004\218\001.\006\231\002^\000\245\000\242\006M\002\158\003\156\005'\006T\006U\0023\002a\001=\000\242\001*\007\161\0017\002g\005M\001A\0013\0023\000\245\0014\000\242\000\245\0015\0016\006V\006f\005i\001+\001.\006^\004\218\002\164\002s\001\029\0011\002\196\002\212\0024\005l\003\156\002p\002v\0024\001*\003\156\002\129\002\218\000\245\0017\002\227\002\238\001A\000\245\002\244\002\132\002\137\002\250\003\000\001%\000\245\001+\001&\003\006\002\144\001H\001*\001\029\0011\003\012\000\245\0024\003\018\003\024\003\030\005t\006T\006U\002\149\002\157\001=\001%\0024\001+\001&\001I\001(\001H\0013\001\029\0011\0014\001a\003$\0015\0016\006V\006f\003*\0030\000\245\006^\004\218\002\163\000\245\000\245\002\178\001I\001(\006T\006U\002\195\005x\001=\001_\000\245\003\156\005\135\000\245\000\245\0017\0013\000\245\001A\0014\000\245\000\245\0015\0016\007\143\007\144\000\245\001.\003\159\006^\004\218\0036\000\245\003<\002\221\000\245\000\245\000\245\0013\003B\003H\0014\001*\002\211\0015\0016\001N\001%\0017\001.\001&\001A\003\156\001H\002\217\003N\000\245\002\226\002\237\001+\003T\000\245\000\245\003Z\001*\001\029\0011\002\243\001N\001%\001F\002\249\001&\001I\001(\001H\002\255\002D\002E\001u\001J\001+\003`\005\153\003\005\003d\003\011\001\029\0011\003\017\003\023\003\029\002\161\003#\003\197\001I\001(\003\207\003)\000\245\002\166\000\245\001]\003\217\003/\0035\004[\000\245\000\245\003;\003\227\001=\003A\002\192\003\236\003\245\004\000\004\t\004\018\0013\001.\003G\0014\000\245\005\157\0015\0016\001X\000\245\004\025\004A\000\245\004F\001=\004M\001*\003M\004\135\004\150\001N\001%\0013\001.\001&\0014\003S\001Y\0015\0016\001X\000\245\0017\001+\000\245\001A\004\156\004\172\001*\001\029\0011\003Y\001N\000\245\004\189\003_\000\245\001[\001(\003j\003q\000m\000\245\005\219\0017\001+\003\149\001A\002\198\000\245\003\196\001\029\0011\000\245\000\245\000\245\000\245\000\245\003\206\003\216\002H\003\226\002\200\000\242\004\191\003\235\003\244\003\156\000\245\000\245\003\255\000\245\004\b\000\245\004\017\001=\000\245\000\245\004\215\004\220\003\156\004\232\004\242\0013\001.\005\006\0014\004\024\005&\0015\0016\001X\002\204\005,\000\245\000\245\004-\001=\0053\001*\004@\0059\000\245\001N\005L\0013\001t\001u\0014\005Q\005`\0015\0016\001X\002\207\0017\001+\002\208\001A\002D\002E\001u\001\029\0011\002\201\004E\001v\001w\004L\001x\001y\005h\000\245\002\222\002\161\001\141\002\203\0017\001\237\005\209\001A\004i\002\166\004r\005k\005r\000\245\000\245\007\218\000\245\000\245\004\134\005\241\000\245\005v\002\192\000\245\002\224\002D\002E\001u\000\245\007\234\004\140\001%\004\155\000\245\001&\001=\000\245\001Y\005|\000\245\002\161\005\130\005\142\0013\000\245\000\245\0014\004\157\002\166\0015\0016\006\017\005\163\004\171\007K\004\214\005\168\001[\001(\005\173\001\239\002\192\007\220\007\235\005\183\004\222\000\245\002D\002E\001u\002\007\004\231\001}\005\189\002\011\0017\001\029\005\200\001A\000\245\000\245\004\241\002\161\004\252\001~\005\211\002\198\000\242\005\229\000\245\002\166\003\156\005\005\002D\002E\001u\005\001\005\215\002H\0052\002\200\000\242\005\236\002\192\001.\003\156\000\245\005\253\002\161\000\245\000\245\003\156\006\007\005+\005-\002\012\002\166\003\156\006 \001*\000\245\002\r\004\254\001N\000\245\002\198\003\156\000\245\003\156\002\192\002\204\0050\000\245\002\014\005?\0055\001+\002H\0066\002\200\000\242\000\245\001\029\0011\003\156\000\245\006@\003\156\001\139\002D\002E\001u\002\207\000\245\006L\002\208\000\245\001\140\006`\001\141\001|\006p\002\201\005\246\002\161\000\245\003\156\002\198\005>\002\204\000\245\002\222\002\166\001\141\002\203\000\245\006v\006\030\004\225\002H\000\245\002\200\000\242\006&\005:\002\192\000\245\005=\001=\0063\005K\002\207\006z\002\198\002\208\002\224\0013\006\150\006;\0014\006R\002\201\0015\0016\001X\002H\000\245\002\200\000\242\006\190\002\222\002\204\001\141\002\203\000\245\001%\006\131\003\156\001&\006\166\005P\001H\000\245\006\250\005[\003\156\000\245\003\156\0017\000\245\006\195\001A\006\234\002\207\002\224\005Z\002\208\002\204\006\192\003\156\006\200\001M\001(\002\201\000\245\006\230\006\206\005_\006\214\002\198\003\156\006\255\002\222\007\020\001\141\002\203\002D\002E\001u\002\207\000\245\002H\002\208\002\200\000\242\000\245\003\156\003\156\005j\002\201\005u\002\161\003\156\003\156\003\156\003\156\002\224\000\245\002\222\002\166\001\141\002\203\007Y\007e\007s\004\148\007u\005q\001.\006\203\003\156\000\245\002\192\002\204\002D\002E\001u\006\237\000\245\006\249\000\245\003\156\002\224\001*\005\129\003\156\005{\001N\000\245\002\161\003\156\006\253\003\156\000\245\000\245\002\207\000\245\002\166\002\208\000\245\001+\000\245\007\001\004\127\003\156\002\201\001\029\0011\005}\005\149\002\192\003\156\005\137\005\148\002\222\005\143\001\141\002\203\007\006\007\018\002D\002E\001u\005\147\007\025\007'\007.\0078\005\162\005\167\000\245\000\245\000\245\006\006\000\245\002\161\002\198\005\172\002\224\001\237\005\175\005\179\007j\002\166\005\187\005\194\005\205\006\005\002H\004P\002\200\000\242\001=\007\149\005\254\005\255\002\192\007\163\001t\001u\0013\006\004\007\175\0014\b\011\006\b\0015\0016\001X\006\t\002D\002E\001u\006(\002\198\006!\b\022\006\"\001v\002z\002\204\001x\001y\b\027\006'\002\161\002H\006=\002\200\000\242\0069\006:\0017\002\166\001\239\001A\006<\007?\006g\004=\006K\006O\002\207\006Q\002\007\002\208\002\192\006S\002\011\006_\001\029\006o\002\201\006q\006r\006w\006{\006\127\002\204\006\145\002\198\002\222\006\152\001\141\002\203\006\156\006\180\006\201\006\225\001%\006\235\007\027\002H\007\021\002\200\000\242\007\022\002D\002E\001u\002\207\007\026\007)\002\208\007T\002\224\007h\007i\007m\002\012\002\201\007\148\002\161\007\152\007\162\002\r\007\166\001}\007\253\002\222\002\166\001\141\002\203\000\000\002\204\000\000\0045\002\014\000\000\001~\002\198\000\000\000\242\002\192\000\000\002D\002E\001u\000\000\000\000\000\000\000\000\002H\002\224\002\200\000\242\002\207\000\000\000\000\002\208\002\161\000\000\000\000\000\000\000\000\000\000\002\201\000\000\002\166\000\000\000\000\000\000\000\000\000\000\002|\002\222\000\000\001\141\002\203\000\000\000\000\002\192\000\000\000\000\002\204\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002}\000\000\000\000\000\000\002\224\000\000\000\000\000\000\001\139\001+\000\000\002\207\002\198\000\000\002\208\001\029\0011\001\140\007|\001\141\001|\002\201\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\002\222\000\000\001\141\002\203\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\198\002D\002E\001u\002\224\000\000\002\204\002\166\000\000\001\237\000\000\000\000\002H\004*\002\200\000\242\002\161\000\000\000\000\0013\002\192\000\000\0014\000\000\002\166\0015\0016\000\000\002\207\000\000\002\189\002\208\000\000\000\000\000\000\000\000\000\000\002\192\002\201\000\000\000\000\000\000\000\000\000\000\002\204\000\000\000\000\002\222\000\000\001\141\002\203\007x\001\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\239\000\000\003~\002\"\000\000\002\208\0044\002\224\000\000\000\000\002\007\000\000\002\201\000\000\002\011\000\000\001\029\000\000\000\000\000\000\002\198\002\222\000\000\001\141\002\203\000\000\000\000\002D\002E\001u\000\000\000\000\002H\000\000\002\200\000\242\000\000\002\198\000\000\000\000\000\000\000\000\002\161\001\239\000\000\002\224\002\030\000\000\000\000\002H\002\166\002\200\000\242\002\007\000\000\002\012\002\206\002\011\000\000\001\029\000\000\002\r\000\000\002\192\002\204\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\204\000\000\000\000\000\000\000\000\002\207\000\000\002\166\002\208\001%\000\000\000\000\007~\002\234\000\000\002\201\000\000\002\012\000\000\000\000\002\192\000\000\002\207\002\r\002\222\002\208\001\141\002\203\000\000\007\028\000\000\000\000\002\201\000\000\000\000\002\014\001(\000\000\000\000\000\000\000\000\002\222\000\000\001\141\002\203\000\000\002\198\b\b\002\224\000\000\007\031\002D\002E\001u\000\000\000\000\000\000\000\000\002H\007 \002\200\000\242\001t\001u\000\000\002\224\002\161\000\000\000\000\000\000\000\000\003v\000\000\000\000\002\166\000\000\000\000\000\000\000\000\003y\002\233\000\000\001v\002z\002\198\001x\001y\002\192\000\000\007!\002\204\000\000\000\000\000\000\000\000\000\000\002H\001*\002\200\000\242\000\000\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\000\000\002{\000\000\002\207\000\000\001+\002\208\002\161\000\000\000\000\000\000\001\029\0011\002\201\000\000\002\166\000\000\007\"\000\000\002\204\000\000\003g\002\222\000\000\001\141\002\203\000\000\007#\002\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\207\002\198\000\000\002\208\000\000\002\224\000\000\b\t\000\000\000\000\002\201\001}\000\000\002H\000\000\002\200\000\242\000\000\000\000\002\222\000\000\001\141\002\203\001~\0013\007%\000\242\0014\000\000\000\000\0015\0016\002D\002E\001u\007&\000\000\000\000\000\000\000\000\007(\000\000\000\000\002\224\000\000\002\204\000\000\002\161\000\000\000\000\000\000\002\198\000\000\007*\000\000\002\166\0017\000\000\002|\000\000\000\000\003n\000\000\002H\000\000\002\200\000\242\002\207\002\192\000\000\002\208\007+\000\000\000\000\000\000\000\000\000\000\002\201\003z\003\128\000\000\000\000\002D\002E\001u\000\000\002\222\001\139\001\141\002\203\001\237\000\000\000\000\000\000\000\000\002\204\001\140\002\161\001\141\001|\000\000\000\000\000\000\000\000\000\000\002\166\000\000\000\000\000\000\000\000\002\224\003u\000\000\000\000\000\000\000\000\000\000\002\207\002\192\000\000\002\208\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002D\002E\001u\000\000\002\198\000\000\000\000\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\002\161\002H\001\239\002\200\000\242\001\240\000\000\000\000\002\166\000\000\000\000\000\000\002\007\007\028\003x\000\000\002\011\002\224\001\029\000\000\000\000\002\192\000\000\002D\002E\001u\000\000\000\000\b\017\000\000\000\000\b\018\000\000\002\204\007\031\000\000\000\000\000\000\002\161\002\198\000\000\000\000\000\000\007 \000\000\000\000\002\166\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\002\207\000\000\002\012\002\208\002\192\000\000\000\000\000\000\002\r\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007!\002\222\002\014\001\141\002\203\000\000\000\000\000\000\000\000\000\000\002\204\000\000\002\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\002\224\002\200\000\242\000\000\000\000\000\000\000\000\002\207\000\000\000\000\002\208\000\000\007\"\000\000\000\000\000\000\000\000\002\201\002D\002E\001u\000\000\007#\000\000\000\000\002\198\002\222\000\000\001\141\002\203\000\000\002\204\000\000\002\161\000\000\000\000\000\000\002H\000\000\002\200\000\242\002\166\b\023\000\000\002D\002E\001u\003\133\000\000\000\000\002\224\000\000\000\000\002\207\002\192\000\000\002\208\000\000\000\000\002\161\000\000\007%\000\000\002\201\002D\002E\001u\002\166\000\000\002\204\000\000\007&\002\222\003\136\001\141\002\203\007(\000\000\000\000\002\161\002\192\000\000\000\000\000\000\000\000\000\000\000\000\002\166\000\000\007*\000\000\003~\000\000\003\162\002\208\003\127\002\224\000\000\000\000\000\000\002\192\002\201\002D\002E\001u\000\000\000\000\007+\000\000\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\002\161\002\198\000\000\000\000\000\000\000\000\000\000\000\000\002\166\000\000\000\000\000\000\000\000\002H\003\166\002\200\000\242\002\224\000\000\000\000\000\000\002\192\000\000\000\000\000\000\000\000\000\000\002\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\002\204\000\000\002\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\000\000\000\000\002\207\000\000\000\000\002\208\002\204\000\000\001\237\000\000\000\000\000\000\002\201\002D\002E\001u\000\000\000\000\000\000\000\000\002\198\002\222\000\000\001\141\002\203\006)\002\204\000\000\002\207\000\000\000\000\002\208\002H\000\000\002\200\000\242\004\028\000\000\002\201\002D\002E\001u\000\000\000\000\000\000\002\224\000\000\002\222\002\207\001\141\002\203\002\208\000\000\006*\002\161\006+\000\000\000\000\002\201\002D\002E\001u\002\166\001\239\002\204\000\000\002\005\002\222\003\222\001\141\002\203\002\224\000\000\002\007\002\161\002\192\000\000\002\011\000\000\001\029\000\000\000\000\002\166\000\000\000\000\006,\002\207\000\000\003\231\002\208\000\000\002\224\000\000\000\000\000\000\002\192\002\201\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\002\161\002G\000\000\000\000\000\000\000\000\002\012\000\000\002\166\006-\000\000\000\000\002\r\002H\003\240\002\200\000\242\002\224\000\000\006.\006/\002\192\0060\000\000\002\014\000\000\000\000\002\198\000\000\000\000\000\000\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\006j\002\161\002\198\000\000\004\030\000\000\000\000\000\000\000\000\002\166\000\000\000\000\000\000\000\000\002H\004.\002\200\000\242\000\000\000\000\000\000\000\000\002\192\000\000\0062\000\000\002\204\000\000\000\000\0064\006>\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\002\202\006h\001\141\002\203\000\000\002\204\000\000\002\207\000\000\000\000\002\208\002H\000\000\002\200\000\242\000\000\000\000\002\201\000\000\006i\000\000\000\000\000\000\000\000\000\000\000\000\002\222\002\207\001\141\002\203\002\208\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002D\002E\001u\000\000\000\000\002\204\000\000\002\198\002\222\000\000\001\141\002\203\002\224\000\000\000\000\002\161\000\000\000\000\000\000\002H\000\000\002\200\000\242\002\166\000\000\000\000\000\000\002\207\000\000\0040\002\208\000\000\002\224\001\237\000\000\000\000\002\192\002\201\002D\002E\001u\000\000\002D\002E\001u\000\000\002\222\000\000\001\141\002\203\000\000\002\204\000\000\002\161\000\000\000\000\000\000\002\161\000\000\000\000\000\000\002\166\000\000\000\000\000\000\002\166\000\000\0047\000\000\000\000\002\224\004:\000\000\002\207\002\192\000\000\002\208\000\000\002\192\000\000\000\000\000\000\000\000\002\201\002D\002E\001u\000\000\001\239\000\000\000\000\002\016\002\222\000\000\001\141\002\203\000\000\000\000\002\007\002\161\002\198\000\000\002\011\000\000\001\029\000\000\000\000\002\166\000\000\000\000\000\000\000\000\002H\004S\002\200\000\242\002\224\000\000\000\000\000\000\002\192\000\000\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\198\000\000\000\000\000\000\002\198\002\012\002\204\002\166\000\000\000\000\000\000\002\r\002H\004V\002\200\000\242\002H\000\000\002\200\000\242\002\192\000\000\000\000\002\014\000\000\000\000\000\000\000\000\002\207\000\000\000\000\002\208\000\000\000\000\000\000\000\000\000\000\000\000\002\201\000\000\000\000\000\000\000\000\000\000\002\204\000\000\002\198\002\222\002\204\001\141\002\203\000\000\002D\002E\001u\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\000\000\000\000\002\207\000\000\000\000\002\208\002\207\002\224\000\000\002\208\000\000\005\003\002\201\000\000\000\000\000\000\002\201\000\000\000\000\000\000\002\198\002\222\001%\001\141\002\203\002\222\002\204\001\141\002\203\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\002D\002E\001u\000\000\000\000\002D\002E\001u\002\224\000\000\000\000\002\207\002\224\000\000\002\208\002\161\000\000\000\000\000\000\000\000\002\161\002\201\000\000\002\166\000\000\000\000\000\000\002\204\002\166\004\153\002\222\000\000\001\141\002\203\004\167\000\000\002\192\000\000\000\000\000\000\001%\002\192\000\000\001&\000\000\000\000\000\000\000\000\000\000\002\207\000\000\002G\002\208\000\000\002\224\000\000\000\000\000\000\000\000\002\201\000\000\000\000\000\000\002H\000\000\002\200\000\242\001(\002\222\000\000\001\141\002\203\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001+\000\000\002\224\000\000\000\000\000\000\001\029\0011\000\000\007w\002\198\002D\002E\001u\000\000\002\198\002D\002E\001u\000\000\000\000\000\000\002H\001.\002\200\000\242\002\161\002H\000\000\002\200\000\242\002\161\000\000\000\000\002\166\000\000\000\000\002\201\001*\002\166\004\217\001%\002D\002E\001u\005G\002\202\002\192\001\141\002\203\000\000\000\000\002\192\000\000\002\204\001+\000\000\002\161\000\000\002\204\0013\001\029\0011\0014\000\000\002\166\0015\0016\000\000\000\000\000\000\006~\000\000\000\000\000\000\000\000\002\207\000\000\002\192\002\208\000\000\002\207\000\000\000\000\002\208\000\000\002\201\000\000\000\000\000\000\000\000\002\201\007x\000\000\000\000\002\222\000\000\001\141\002\203\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\001G\000\000\000\000\000\000\002\198\000\000\000\000\000\000\0013\002\198\000\000\0014\002\224\000\000\0015\0016\002H\002\224\002\200\000\242\000\000\002H\001*\002\200\000\242\000\000\000\000\000\000\002D\002E\001u\000\000\000\000\000\000\000\000\002\198\000\000\000\000\000\000\001+\0017\000\000\000\000\002\161\000\000\001\029\0011\002H\002\204\002\200\000\242\002\166\000\000\002\204\002D\002E\001u\006\129\000\000\002D\002E\001u\000\000\000\000\002\192\000\000\000\000\000\000\000\000\002\161\002\207\000\000\000\000\002\208\002\161\002\207\000\000\002\166\002\208\002\204\002\201\000\000\002\166\006\144\000\000\002\201\000\000\000\000\006\147\002\222\002\192\001\141\002\203\000\000\002\222\002\192\001\141\002\203\000\000\0013\000\000\002\207\0014\007\028\002\208\0015\0016\000\000\000\000\000\000\000\000\002\201\000\000\002\224\000\000\000\000\000\000\000\000\002\224\000\000\002\222\007\029\001\141\002\203\007\031\000\000\000\000\000\000\002\198\000\000\000\000\0019\000\000\007 \000\000\000\000\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\002\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\002D\002E\001u\000\000\002\198\002D\002E\001u\007!\000\000\000\000\002H\000\000\002\200\000\242\002\161\002H\002\204\002\200\000\242\002\161\000\000\000\000\002\166\000\000\000\000\000\000\000\000\002\166\006\160\000\000\000\000\000\000\000\000\006\163\000\000\002\192\000\000\000\000\002\207\000\000\002\192\002\208\002\204\000\000\007\"\000\000\000\000\002\204\002\201\000\000\000\000\000\000\001%\000\000\007#\000\000\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\002\207\000\000\000\000\002\208\000\000\002\207\000\000\000\000\002\208\000\000\002\201\000\000\000\000\000\000\0079\002\201\000\000\002\224\000\000\002\222\000\000\001\141\002\203\000\000\002\222\000\000\001\141\002\203\000\000\007%\000\000\000\000\000\000\000\000\000\000\002\198\002D\002E\001u\007&\002\198\000\000\000\000\002\224\007(\000\000\000\000\002H\002\224\002\200\000\242\002\161\002H\000\000\002\200\000\242\000\000\007*\000\000\002\166\000\000\000\000\002D\002E\001u\006\184\000\000\002D\002E\001u\000\000\000\000\002\192\000\000\000\000\007+\001*\002\161\000\000\002\204\000\000\000\000\002\161\000\000\002\204\002\166\000\000\000\000\000\000\000\000\002\166\006\187\000\000\001+\000\000\000\000\006\191\000\000\002\192\001\029\0011\002\207\007z\002\192\002\208\000\000\002\207\000\000\000\000\002\208\000\000\002\201\000\000\000\000\000\000\000\000\002\201\000\000\000\000\000\000\002\222\000\000\001\141\002\203\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\224\000\000\000\000\000\000\002H\002\224\002\200\000\242\000\000\0013\000\000\000\000\0014\000\000\000\000\0015\0016\000\000\002\198\002D\002E\001u\000\000\002\198\002D\002E\001u\000\000\000\000\000\000\002H\000\000\002\200\000\242\002\161\002H\002\204\002\200\000\242\002\161\000\000\007x\002\166\000\000\000\000\000\000\000\000\002\166\007\179\001%\000\000\000\000\006\018\007\181\000\000\002\192\000\000\000\000\002\207\000\000\002\192\002\208\002\204\000\000\000\000\000\000\000\000\002\204\002\201\000\000\001%\000\000\000\000\001&\000\000\000\000\001(\002\222\000\000\001\141\002\203\000\000\000\000\000\000\002\207\000\000\000\000\002\208\000\000\002\207\000\000\000\000\002\208\000\000\002\201\000\000\000\000\001(\000\000\002\201\000\000\002\224\000\000\002\222\000\000\001\141\002\203\005T\002\222\000\000\001\141\002\203\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\000\000\000\000\006\020\007\174\002\198\000\000\000\000\002\224\000\000\000\000\000\000\002H\002\224\002\200\000\242\000\000\002H\001*\002\200\000\242\000\000\000\000\000\000\001.\002D\002E\001u\000\000\000\000\001t\001u\000\000\000\000\000\000\001+\000\000\000\000\000\000\001*\002\161\001\029\006\023\000\000\002\204\000\000\000\000\004\229\002\166\002\204\001v\002z\000\000\001x\001y\000\000\001+\000\000\004\236\000\000\000\000\002\192\001\029\0011\000\000\000\000\002\207\000\000\000\000\002\208\000\000\002\207\000\000\000\000\002\208\000\000\002\201\000\000\002{\000\000\000\000\002\201\000\000\000\000\000\000\002\222\000\000\001\141\002\203\000\000\002\222\000\000\001\141\002\203\000\000\0013\000\000\000\000\006\024\000\000\000\000\0015\0016\000\000\000\000\000\000\000\000\000\000\001=\002\224\000\000\005\226\000\000\006\029\002\224\006\026\0013\000\000\000\000\0014\000\000\000\000\0015\0016\005]\002\198\000\000\0017\000\000\001}\002D\002E\001u\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\001~\000\000\000\000\000\242\002\161\000\000\000\000\0017\000\000\000\000\001A\000\000\002\166\000\000\000\000\000\000\001t\001u\000\000\000\000\000\000\000\000\004\145\000\000\000\000\002\192\000\000\000\000\002\204\000\000\000\000\000\000\000\000\000\000\000\000\002|\001v\001\135\000\000\001x\001y\000\000\001t\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\175\000\000\003z\003\128\000\000\000\000\002\134\002\201\000\000\001v\001\135\001\139\001x\001y\000\000\000\000\002\222\000\000\001\141\002\203\001\140\000\000\001\141\001|\000\000\000\000\000\000\001\143\000\000\001\144\002d\000\000\002\139\000\000\000\000\000\000\002\198\000\000\000\000\000\000\002\224\000\000\002D\002E\001u\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\001\143\000\000\001\144\002d\002\161\000\000\000\000\000\000\000\000\001\142\001t\001u\002\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001~\004\"\000\000\000\242\002\192\000\000\002\204\000\000\000\000\001v\001\135\002\142\001x\001y\001\142\000\000\000\000\000\000\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\242\000\000\003\175\002\159\002\161\000\000\000\000\000\000\002\142\002\201\000\000\000\000\002\166\000\000\000\000\000\000\000\000\000\000\002\222\000\000\001\141\002\203\004!\000\000\001\143\002\192\001\144\002d\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\139\000\000\000\000\000\000\002\198\000\000\000\000\002\224\000\000\001\151\000\000\001\141\001|\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\001t\001u\000\000\001\142\000\000\001\139\000\000\001\237\000\000\000\000\000\000\000\000\000\000\000\000\001\151\001~\001\141\001|\000\242\000\000\001v\001\135\000\000\001x\001y\000\000\002\142\002\204\000\000\000\000\001t\001u\000\000\002\198\000\000\000\000\000\000\001t\001u\000\000\000\000\000\000\000\000\002\165\000\000\002H\000\000\002\200\000\242\000\000\001v\001\135\003\175\001x\001y\000\000\000\000\001v\001\135\002\201\001x\001y\001\239\000\000\001\143\002\018\001\144\002d\002\222\000\000\001\141\002\203\002\007\002\197\000\000\000\000\002\011\002\204\001\029\001\139\002\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\151\000\000\001\141\001|\002\224\000\000\001\143\000\000\001\144\002d\000\000\001\142\000\000\001\143\003\175\001\144\002d\000\000\000\000\000\000\000\000\002\201\000\000\001~\000\000\000\000\000\242\000\000\000\000\002\012\002\222\000\000\001\141\002\203\002\142\002\r\000\000\000\000\001t\001u\000\000\001\142\000\000\000\000\000\000\001t\001u\002\014\001\142\000\000\000\000\000\000\000\000\001~\002\224\000\000\000\242\000\000\001v\001\135\001~\001x\001y\000\242\002\142\001v\001\135\000\000\001x\001y\000\000\002\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\219\000\000\000\000\000\000\000\000\000\000\001\139\002\228\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\151\000\000\001\141\001|\000\000\000\000\001\143\000\000\001\144\002d\000\000\000\000\000\000\001\143\000\000\001\144\002d\000\000\000\000\000\000\000\000\001\139\000\000\001t\001u\000\000\000\000\000\000\001\139\000\000\001\151\000\000\001\141\001|\000\000\000\000\000\000\001\151\000\000\001\141\001|\001\142\000\000\001v\001\135\000\000\001x\001y\001\142\001t\001u\000\000\000\000\001~\001t\001u\000\242\000\000\000\000\000\000\001~\000\000\000\000\000\242\002\142\000\000\002\239\000\000\000\000\001v\001\135\002\142\001x\001y\001v\001\135\000\000\001x\001y\000\000\001t\001u\000\000\000\000\000\000\000\000\000\000\001\143\000\000\001\144\002d\000\000\002\245\000\000\000\000\000\000\000\000\002\251\000\000\000\000\001v\001\135\000\000\001x\001y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\143\000\000\001\144\002d\001\139\001\143\000\000\001\144\002d\001\142\003\001\001\139\000\000\001\151\000\000\001\141\001|\000\000\000\000\000\000\001\151\001~\001\141\001|\000\242\000\000\000\000\000\000\000\000\000\000\000\000\001\143\002\142\001\144\002d\001\142\001t\001u\000\000\000\000\001\142\001t\001u\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\242\000\000\001~\000\000\000\000\000\242\001v\001\135\002\142\001x\001y\001v\001\135\002\142\001x\001y\001\142\001t\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001~\003\007\000\000\000\242\000\000\000\000\003\r\001\139\000\000\001v\001\135\002\142\001x\001y\000\000\000\000\001\151\000\000\001\141\001|\000\000\000\000\001\143\000\000\001\144\002d\000\000\001\143\000\000\001\144\002d\000\000\003\019\001\139\000\000\000\000\000\000\000\000\001\139\000\000\000\000\000\000\001\151\000\000\001\141\001|\000\000\001\151\000\000\001\141\001|\000\000\000\000\001\143\000\000\001\144\002d\001\142\001t\001u\000\000\000\000\001\142\000\000\001\139\000\000\001%\000\000\000\000\001~\000\000\000\000\000\242\001\151\001~\001\141\001|\000\242\001v\001\135\002\142\001x\001y\000\000\000\000\002\142\000\000\000\000\001\142\001t\001u\000\000\000\000\000\000\001t\001u\000\000\000\000\000\000\000\000\001~\003\025\000\000\000\242\000\000\000\000\000\000\000\000\000\000\001v\001\135\002\142\001x\001y\001v\001\135\000\000\001x\001y\000\000\000\000\000\000\001\143\000\000\001\144\002d\000\000\000\000\000\000\000\000\000\000\000\000\003\031\001\139\000\000\000\000\000\000\003%\001\139\000\000\000\000\000\000\001\151\000\000\001\141\001|\000\000\001\151\000\000\001\141\001|\000\000\000\000\001\143\001*\001\144\002d\001\142\001\143\000\000\001\144\002d\000\000\000\000\001\139\000\000\000\000\000\000\000\000\001~\000\000\001+\000\242\001\151\000\000\001\141\001|\001\029\0011\000\000\002\142\000\000\000\000\000\000\000\000\000\000\001t\001u\001\142\000\000\000\000\001\237\000\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\242\000\000\001~\001v\001\135\000\242\001x\001y\002\142\000\000\000\000\000\000\000\000\002\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003+\000\000\0013\000\000\001\139\0014\000\000\000\000\0015\0016\000\000\001%\000\000\001\151\000\000\001\141\001|\001\239\000\000\000\000\002.\001\143\000\000\001\144\002d\000\000\000\000\002\007\000\000\000\000\000\000\002\011\000\000\001\029\002\128\001\139\000\000\001t\001u\000\000\001\139\004\198\000\000\000\000\001\151\000\000\001\141\001|\004\204\001\151\000\000\001\141\001|\001t\001u\000\000\001\142\001v\001\135\000\000\001x\001y\000\000\001t\001u\000\000\000\000\000\000\001~\000\000\000\000\000\242\002\012\001v\001\135\000\000\001x\001y\002\r\002\142\0031\000\000\000\000\001v\001\135\000\000\001x\001y\000\000\000\000\002\014\001t\001u\000\000\000\000\000\000\0037\000\000\000\000\001*\000\000\001\143\000\000\001\144\002d\000\000\003=\000\000\000\000\000\000\000\000\001v\001\135\000\000\001x\001y\001+\001\143\000\000\001\144\002d\000\000\001\029\0011\000\000\000\000\000\000\001\143\000\000\001\144\002d\000\000\001\139\000\000\003C\000\000\001\142\000\000\000\000\000\000\000\000\001\151\000\000\001\141\001|\000\000\000\000\000\000\001~\000\000\000\000\000\242\001\142\000\000\000\000\001\143\000\000\001\144\002d\002\142\001\237\000\000\001\142\000\000\001~\000\000\000\000\000\242\001t\001u\000\000\000\000\000\000\000\000\001~\002\142\0013\000\242\000\000\0014\000\000\000\000\0015\0016\000\000\002\142\004\210\000\000\001v\001\135\001\142\001x\001y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\242\000\000\000\000\004\213\000\000\000\000\003I\001\139\002\142\000\000\001\239\000\000\000\000\002T\000\000\000\000\001\151\000\000\001\141\001|\002\007\000\000\000\000\001\139\002\011\000\000\001\029\001\143\000\000\001\144\002d\000\000\001\151\001\139\001\141\001|\000\000\000\000\000\000\000\000\000\000\000\000\001\151\000\000\001\141\001|\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001t\001u\000\000\000\000\000\000\000\000\001\139\001\142\000\000\000\000\002\012\000\000\000\000\001t\001u\001\151\002\r\001\141\001|\001~\001v\001\135\000\242\001x\001y\000\000\000\000\000\000\002\014\000\000\002\142\000\000\000\000\001v\001\135\000\000\001x\001y\001t\001u\000\000\000\000\000\000\003O\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003U\000\000\001v\001\135\000\000\001x\001y\000\000\001\143\000\000\001\144\002d\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\143\000\000\001\144\002d\003[\000\000\001\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\151\000\000\001\141\001|\000\000\001t\001u\001\142\000\000\000\000\001\143\000\000\001\144\002d\000\000\000\000\000\000\000\000\000\000\001~\001\142\000\000\000\242\000\000\000\000\001v\001\135\000\000\001x\001y\002\142\000\000\001~\000\000\000\000\000\242\000\000\000\000\003e\001u\000\000\000\000\000\000\002\142\000\000\001\142\000\000\000\000\003a\000\000\000\000\002D\002E\001u\000\000\000\000\000\000\001~\003\129\001\135\000\242\001x\001y\000\000\000\000\000\000\002\161\000\000\002\142\001\143\000\000\001\144\002d\000\000\002\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\139\003\172\000\000\000\000\002\192\000\000\001\237\001\237\000\000\001\151\000\000\001\141\001|\001\139\000\000\000\000\000\000\000\000\003\134\003\150\003\151\001\142\001\151\000\000\001\141\001|\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\242\000\000\001\139\000\000\000\000\000\000\000\000\000\000\002\142\000\000\000\000\001\151\000\000\001\141\001|\000\000\000\000\000\000\001\142\000\000\000\000\000\000\002D\002E\001u\001\239\001\239\000\000\004\162\004\247\001~\000\000\002\198\000\242\000\000\002\007\002\007\002\161\000\000\002\011\002\011\001\029\001\029\000\000\002H\002\166\002\200\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\177\000\000\000\000\002\192\000\000\000\000\001\139\000\000\003\154\003\155\000\000\000\000\000\000\000\000\000\000\001\151\000\000\001\141\001|\000\000\000\000\002\204\000\000\000\000\000\000\002\012\002\012\001%\000\000\000\000\001&\002\r\002\r\000\000\000\000\000\000\000\000\000\000\000\000\001\139\000\000\000\000\000\000\002\014\002\014\000\000\003\175\000\000\001\151\000\000\001\141\001|\000\000\002\201\001(\000\000\000\000\002D\002E\001u\000\000\000\000\002\222\000\000\001\141\002\203\000\000\002\198\000\000\000\000\000\000\000\000\002\161\000\000\002D\002E\001u\000\000\000\000\002H\002\166\002\200\000\242\000\000\000\000\000\000\002\224\000\000\000\000\002\161\003\179\000\000\000\000\002\192\002D\002E\001u\002\166\000\000\000\000\001.\001t\001u\000\000\000\000\000\000\000\000\003\183\000\000\002\161\002\192\002\204\000\000\000\000\000\000\001*\000\000\002\166\000\000\000\000\000\000\001v\001\135\000\000\001x\001y\000\000\003\191\000\000\000\000\002\192\000\000\001+\000\000\000\000\000\000\003\175\000\000\001\029\0011\000\000\000\000\000\000\002\201\003\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\222\000\000\001\141\002\203\000\000\002\198\000\000\000\000\002D\002E\001u\000\000\000\000\001\143\000\000\001\144\002d\002H\000\000\002\200\000\242\000\000\002\198\002\161\002\224\000\000\000\000\000\000\000\000\000\000\000\000\002\166\001=\000\000\002H\000\000\002\200\000\242\000\000\000\000\0013\003\201\002\198\0014\002\192\000\000\0015\0016\001\142\002\204\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\001~\000\000\000\000\000\242\000\000\000\000\002\204\000\000\000\000\000\000\000\000\002\142\0017\000\000\003\175\001T\001t\001u\000\000\000\000\000\000\002\201\000\000\000\000\000\000\000\000\002\204\000\000\000\000\000\000\002\222\003\175\001\141\002\203\000\000\000\000\001v\001\135\002\201\001x\001y\000\000\000\000\000\000\000\000\000\000\000\000\002\222\002\198\001\141\002\203\003\175\000\000\000\000\002\224\000\000\000\000\000\000\002\201\003\208\002H\000\000\002\200\000\242\001\139\000\000\000\000\002\222\000\000\001\141\002\203\002\224\006)\001\151\000\000\001\141\001|\000\000\000\000\000\000\001\143\000\000\001\144\002d\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\224\002\204\002D\002E\001u\000\000\000\000\001t\001u\006*\007\169\006+\000\000\000\000\000\000\000\000\000\000\002\161\000\000\000\000\000\000\000\000\000\000\000\000\001\142\002\166\003\175\001v\001\135\000\000\001x\001y\000\000\002\201\000\000\003\211\001~\000\000\002\192\000\242\000\000\006,\002\222\000\000\001\141\002\203\000\000\002\142\000\000\000\000\003\218\000\000\000\000\002D\002E\001u\000\000\000\000\001t\001u\000\000\000\000\000\000\000\000\000\000\000\000\002\224\000\000\002\161\000\000\000\000\001\143\000\000\001\144\002d\000\000\002\166\006-\001v\001\135\000\000\001x\001y\000\000\001t\001u\003\251\006.\006/\002\192\0060\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\139\003\228\002\198\000\000\001v\001\135\001\142\001x\001y\001\151\000\000\001\141\001|\006l\002H\000\000\002\200\000\242\001~\000\000\000\000\000\242\001\143\000\000\001\144\002d\000\000\003\237\000\000\002\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0062\001t\001u\000\000\000\000\0064\006>\000\000\000\000\002\204\000\000\001\143\000\000\001\144\002d\000\000\002\198\000\000\006h\000\000\001\142\001v\001\135\000\000\001x\001y\000\000\000\000\002H\000\000\002\200\000\242\001~\000\000\003\175\000\242\006i\000\000\000\000\000\000\000\000\002\201\000\000\002\142\003\246\001\139\001\142\000\000\000\000\000\000\002\222\000\000\001\141\002\203\001\151\000\000\001\141\001|\001~\000\000\002\204\000\242\000\000\000\000\000\000\001\143\000\000\001\144\002d\002\142\000\000\000\000\000\000\000\000\002\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\175\000\000\000\000\000\000\000\000\000\000\000\000\002\201\001t\001u\000\000\001\139\000\000\000\000\000\000\001\142\002\222\000\000\001\141\002\203\001\151\000\000\001\141\001|\002D\002E\001u\001~\001v\001\135\000\242\001x\001y\000\000\000\000\000\000\000\000\001\139\002\142\002\161\002\224\000\000\001t\001u\000\000\000\000\001\151\002\166\001\141\001|\000\000\004\001\000\000\000\000\000\000\000\000\000\000\004\004\000\000\000\000\002\192\000\000\001v\001\135\000\000\001x\001y\000\000\000\000\000\000\000\000\000\000\001\143\000\000\001\144\002d\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\n\000\000\000\000\000\000\000\000\000\000\001\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\151\000\000\001\141\001|\000\000\000\000\001\143\001\142\001\144\002d\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\242\000\000\002\198\002\161\000\000\000\000\000\000\000\000\002\142\000\000\000\000\002\166\000\000\000\000\002H\000\000\002\200\000\242\000\000\001\142\000\000\004\r\000\000\000\000\002\192\002D\002E\001u\000\000\000\000\000\000\001~\001t\001u\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\142\000\000\000\000\000\000\002\204\000\000\004}\000\000\000\000\000\000\001v\001\135\000\000\001x\001y\000\000\000\000\000\000\000\000\001\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\151\003\175\001\141\001|\000\000\004\019\000\000\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\222\002\198\001\141\002\203\000\000\001t\001u\000\000\001\139\001\143\000\000\001\144\002d\002H\000\000\002\200\000\242\001\151\000\000\001\141\001|\000\000\000\000\000\000\002\224\001v\001\135\000\000\001x\001y\000\000\000\000\000\000\000\000\000\000\002D\002E\001u\002G\000\000\002D\002E\001u\000\000\001\142\002\204\000\000\000\000\004\026\000\000\002H\000\000\002\200\000\242\000\000\002\161\001~\000\000\004\028\000\242\002D\002E\001u\002\166\000\000\000\000\000\000\002\142\000\000\001\143\003\175\001\144\002d\004%\000\000\002\161\002\192\002\201\000\000\001t\001u\000\000\004\029\002\166\000\000\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\004(\000\000\000\000\002\192\000\000\000\000\001v\001\135\000\000\001x\001y\001\142\000\000\000\000\000\000\000\000\000\000\002\224\000\000\000\000\000\000\002\201\000\000\001~\000\000\000\000\000\242\001\139\000\000\004B\002\202\000\000\001\141\002\203\002\142\000\000\001\151\000\000\001\141\001|\000\000\000\000\002G\000\000\000\000\000\000\000\000\002\198\000\000\000\000\001\143\000\000\001\144\002d\002H\000\000\002\200\000\242\000\000\002H\000\000\002\200\000\242\000\000\000\000\000\000\000\000\002\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\001t\001u\001\142\000\000\001\139\000\000\000\000\004\031\002\204\000\000\001\237\000\000\000\000\001\151\001~\001\141\001|\000\242\001t\001u\001v\001\135\000\000\001x\001y\002\142\000\000\000\000\002\204\000\000\000\000\000\000\000\000\003\175\000\000\002\201\000\000\000\000\001v\001\135\002\201\001x\001y\004G\002\202\000\000\001\141\002\203\000\000\002\222\000\000\001\141\002\203\003\175\000\000\000\000\000\000\000\000\000\000\000\000\002\201\004N\000\000\000\000\001\143\001\239\001\144\002d\005\012\002\222\000\000\001\141\002\203\002\224\000\000\002\007\000\000\000\000\001\139\002\011\000\000\001\029\001\143\000\000\001\144\002d\000\000\001\151\000\000\001\141\001|\000\000\000\000\002\224\000\000\002D\002E\001u\000\000\001\142\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\161\001~\000\000\000\000\000\242\002\161\000\000\001\142\002\166\000\000\002\012\000\000\002\142\002\166\001t\001u\002\r\000\000\004`\001~\000\000\002\192\000\242\004e\000\000\000\000\002\192\000\000\002\014\000\000\002\142\000\000\000\000\000\000\001v\001\135\000\000\001x\001y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003e\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\139\003\129\001\135\000\000\001x\001y\000\000\000\000\000\000\001\151\000\000\001\141\001|\001\143\000\000\001\144\002d\000\000\001\139\000\000\002\198\000\000\000\000\000\000\000\000\002\198\000\000\001\151\000\000\001\141\001|\000\000\002H\000\000\002\200\000\242\000\000\002H\000\000\002\200\000\242\000\000\000\000\000\000\003\134\003\150\003\151\000\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\001t\001u\000\000\000\000\000\000\001~\000\000\000\000\000\242\002\204\000\000\000\000\000\000\000\000\002\204\000\000\002\142\000\000\000\000\000\000\001v\001\135\000\000\001x\001y\001\142\000\000\000\000\000\000\001\237\000\000\000\000\000\000\000\000\003\175\000\000\000\000\001~\000\000\003\175\000\242\002\201\000\000\004\233\000\000\000\000\002\201\000\000\000\000\000\000\002\222\000\000\001\141\002\203\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\000\000\000\000\001\143\000\000\001\144\002d\000\000\001\139\003\154\004\223\000\000\000\000\002\224\000\000\000\000\000\000\001\151\002\224\001\141\001|\001t\001u\001\239\000\000\000\000\005\016\000\000\000\000\001%\000\000\000\000\001&\002\007\001t\001u\000\000\002\011\001\142\001\029\001\139\001v\001\135\000\000\001x\001y\000\000\000\000\000\000\001\151\001~\001\141\001|\000\242\001v\001\135\001(\001x\001y\000\000\000\000\002\142\000\000\000\000\005\000\000\000\005T\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001%\005\007\002\012\001&\000\000\000\000\005W\000\000\002\r\001\143\000\000\001\144\002d\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\001\143\000\000\001\144\002d\001.\001(\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005T\001\139\000\000\000\000\001*\000\000\000\000\001\142\000\000\000\000\001\151\000\000\001\141\001|\000\000\000\000\005\208\000\000\001%\001~\001\142\001+\000\242\000\000\000\000\000\000\000\000\001\029\0011\000\000\002\142\000\000\001~\000\000\000\000\000\242\001.\000\000\001t\001u\000\000\000\000\000\000\002\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\006\164\000\000\000\000\001v\002z\000\000\001x\001y\000\000\000\000\000\000\001%\000\000\001+\001&\000\000\000\000\000\000\001=\001\029\0011\000\000\000\000\000\000\000\000\000\000\0013\000\000\001\139\0014\000\000\002{\0015\0016\005]\000\000\000\000\001\151\001(\001\141\001|\001\139\000\000\000\000\000\000\000\000\001\237\000\000\005T\000\000\001\151\001*\001\141\001|\000\000\000\000\000\000\000\000\0017\000\000\000\000\001A\000\000\000\000\006\161\001=\001%\000\000\001+\001&\000\000\000\000\000\000\0013\001\029\0011\0014\000\000\000\000\0015\0016\005]\001}\000\000\001.\000\000\000\000\000\000\001\237\001t\001u\000\000\000\000\001(\001~\000\000\000\000\000\242\000\000\001*\000\000\001\239\000\000\005T\005\019\0017\006\188\000\000\001A\001v\002z\002\007\001x\001y\000\000\002\011\001+\001\029\000\000\006\175\000\000\000\000\001\029\0011\000\000\000\000\000\000\000\000\0013\002|\000\000\0014\000\000\000\000\0015\0016\000\000\002{\000\000\001.\000\000\000\000\000\000\001\239\000\000\000\000\005\026\000\000\001%\003z\003\128\001&\000\000\002\007\001*\000\000\002\012\002\011\001\139\001\029\004\200\000\000\002\r\000\000\000\000\000\000\000\000\001\140\001=\001\141\001|\001+\000\000\000\000\002\014\001(\0013\001\029\0011\0014\000\000\000\000\0015\0016\005]\005T\003e\001u\001}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\012\000\000\001~\006\185\000\000\000\242\002\r\000\000\003\129\001\135\0017\001x\001y\001A\000\000\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\001.\000\000\001=\003e\001u\000\000\000\000\000\000\000\000\000\000\0013\000\000\000\000\0014\002|\001*\0015\0016\005]\000\000\000\000\000\000\000\000\003\129\001\135\000\000\001x\001y\003\134\003\150\003\151\000\000\001+\000\000\003z\003\128\000\000\000\000\001\029\0011\000\000\000\000\0017\001\139\000\000\001A\000\000\000\000\000\000\000\000\000\000\000\000\001\140\000\000\001\141\001|\000\000\000\000\000\000\000\000\000\000\000\000\001t\001u\001\142\000\000\003\134\003\150\003\151\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\242\000\000\000\000\001v\001\135\001=\001x\001y\000\000\000\000\000\000\000\000\000\000\0013\001%\000\000\0014\001&\000\000\0015\0016\005]\000\000\001\142\000\000\000\000\007N\000\000\000\000\000\000\003\154\006\202\000\000\000\000\000\000\001~\000\000\000\000\000\242\000\000\000\000\001(\000\000\007\129\000\000\0017\000\000\001\143\001A\001\144\002d\001%\000\000\000\000\001&\000\000\000\000\000\000\000\000\000\000\000\000\001\139\000\000\000\000\000\000\000\000\000\000\000\000\003\154\006\236\001\151\000\000\001\141\001|\000\000\000\000\000\000\000\000\001(\000\000\000\000\000\000\001\142\002D\002E\001u\000\000\001.\004\185\000\000\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\242\000\000\001\139\000\000\000\000\001*\007r\000\000\002\142\004\028\000\000\001\151\000\000\001\141\001|\000\000\000\000\001t\001u\000\000\000\000\000\000\001+\000\000\002D\002E\001u\001.\001\029\0011\000\000\000\000\000\000\006\221\000\000\000\000\000\000\001v\001\135\002\161\001x\001y\001*\000\000\000\000\000\000\000\000\002\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001+\002\192\001\139\000\000\000\000\000\000\001\029\0011\000\000\000\000\000\000\001\151\000\000\001\141\001|\001=\000\000\002D\002E\001u\000\000\000\000\001\143\0013\001\144\001\162\0014\002G\000\000\0015\0016\007\136\002\161\000\000\000\000\000\000\000\000\000\000\000\000\002H\002\166\002\200\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000m\000\000\001=\002\192\000\000\0017\000\000\001\142\001A\000\000\0013\001t\001u\0014\000\000\002\198\0015\0016\000\000\001~\000\000\000\000\000\242\000\000\000\000\004\031\000\000\002H\000\000\002\200\000\242\001v\001\135\000\000\001x\001y\000\000\000\000\000\000\000\000\000\000\001\204\0017\000\000\000\000\004\192\000\000\000\000\000\000\000\000\001t\001u\000\000\002\201\000\000\000\000\000\000\000\000\000\000\002\204\000\000\000\000\002\202\000\000\001\141\002\203\000\000\002\198\000\000\000\000\001v\001\135\000\000\001x\001y\001\143\000\000\001\144\001\192\002H\001\189\002\200\000\242\001\139\005\021\000\000\000\000\000\000\000\000\000\000\000\000\002\201\001\151\000\000\001\141\001|\000\000\000\000\000\000\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\001t\001u\000\000\001\142\002\204\000\000\000\000\001\143\000\000\001\144\001\192\000\000\000\000\000\000\000\000\001~\000\000\002\224\000\242\000\000\001v\001\135\000\000\001x\001y\000\000\002D\002E\001u\004\234\001\194\000\000\000\000\000\000\000\000\000\000\002\201\000\000\000\000\000\000\000\000\002\161\001\142\000\000\000\000\002\222\000\000\001\141\002\203\002\166\000\000\000\000\001t\001u\001~\000\000\000\000\000\242\000\000\000\000\000\000\000\000\002\192\000\000\001\143\000\000\001\144\001\192\000\000\002\224\000\000\000\000\001v\002z\000\000\001x\001y\000\000\000\000\001\139\000\000\000\000\001t\001u\000\000\000\000\000\000\000\000\001\151\000\000\001\141\001|\001t\001u\000\000\000\000\000\000\000\000\000\000\001\142\002{\000\000\001v\001\135\000\000\001x\001y\000\000\002D\002E\001u\001~\001v\001\135\000\242\001x\001y\000\000\001\139\000\000\000\000\000\000\000\000\002\161\000\000\000\000\002\198\001\151\000\000\001\141\001|\002\166\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\002\192\000\000\001\143\000\000\001\144\002d\000\000\001}\000\000\000\000\000\000\000\000\001\143\000\000\001\144\002l\000\000\000\000\000\000\001~\000\000\000\000\000\242\000\000\000\000\000\000\002\204\000\000\000\000\000\000\000\000\001\139\000\000\000\000\000\000\000\000\000\000\001\142\000\000\000\000\001\151\000\000\001\141\001|\000\000\000\000\000\000\001\142\000\000\001~\000\000\004\137\000\242\000\000\002|\000\000\000\000\000\000\002\201\001~\004;\000\000\000\242\000\000\002\198\000\000\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\002~\003\128\002H\000\000\002\200\000\242\001t\001u\000\000\001\139\002D\002E\001u\000\000\000\000\002o\000\000\002\224\001\140\000\000\001\141\001|\000\000\000\000\000\000\002\161\001v\001\135\000\000\001x\001y\000\000\000\000\002\166\002\204\000\000\000\000\000\000\000\000\001\139\000\000\000\000\000\000\000\000\000\000\000\000\002\192\000\000\001\151\001\139\001\141\001|\000\000\000\000\000\000\000\000\000\000\000\000\001\151\0043\001\141\001|\000\000\000\000\000\000\000\000\002\201\000\000\000\000\000\000\001\143\000\000\001\144\002d\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002D\002E\001u\000\000\000\000\002D\002E\001u\002\224\000\000\000\000\001\237\000\000\000\000\001\142\002\161\000\000\000\000\000\000\002\198\002\161\000\000\000\000\002\166\000\000\000\000\001~\000\000\002\166\000\242\000\000\002H\000\000\002\200\000\242\000\000\002\192\002\141\000\000\000\000\000\000\002\192\002D\002E\001u\000\000\000\000\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\161\000\000\000\000\000\000\000\000\002\161\002\204\000\000\002\166\001\239\001\237\000\000\005\030\002\166\000\000\000\000\000\000\000\000\000\000\002\007\000\000\002\192\000\000\002\011\000\000\001\029\002\192\000\000\000\000\000\000\000\000\004 \000\000\001\139\000\000\000\000\000\000\000\000\002\201\000\000\000\000\000\000\001\151\002\198\001\141\001|\000\000\002\222\002\198\001\141\002\203\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\002H\000\000\002\200\000\242\002\012\001\239\000\000\000\000\005!\000\000\002\r\002\224\000\000\000\000\000\000\002\007\000\000\000\000\000\000\002\011\000\000\001\029\002\014\000\000\000\000\002\198\000\000\002\204\007\028\000\000\002\198\000\000\002\204\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\002H\b\017\002\200\000\242\b\018\000\000\000\000\007\031\000\000\000\000\003\160\000\000\000\000\000\000\000\000\002\214\007 \002\201\002\012\000\000\000\000\000\000\002\201\000\000\002\r\000\000\002\222\002\204\001\141\002\203\000\000\002\222\002\204\001\141\002\203\000\000\002\014\000\000\002D\002E\001u\000\000\000\000\002D\002E\001u\007!\000\000\000\000\000\000\002\224\000\000\002\220\002\161\000\000\002\224\000\000\002\229\002\161\002\201\000\000\002\166\000\000\000\000\002\201\000\000\002\166\000\000\002\222\000\000\001\141\002\203\000\000\002\222\002\192\001\141\002\203\000\000\000\000\002\192\002D\002E\001u\007\"\000\000\002D\002E\001u\000\000\000\000\000\000\000\000\002\224\007#\000\000\002\161\000\000\002\224\000\000\000\000\002\161\000\000\000\000\002\166\001t\001u\001\237\000\000\002\166\000\000\000\000\000\000\000\000\b\028\000\000\000\000\002\192\000\000\000\000\000\000\000\000\002\192\000\000\000\000\001v\002z\000\000\001x\001y\000\000\000\000\000\000\007%\000\000\000\000\000\000\000\000\000\000\002\198\000\000\000\000\000\000\007&\002\198\000\000\000\000\000\000\007(\000\000\000\000\002H\000\000\002\200\000\242\000\000\002H\000\000\002\200\000\242\000\000\007*\001\239\000\000\000\000\005/\000\000\002D\002E\001u\000\000\000\000\002\007\000\000\000\000\000\000\002\011\000\000\001\029\007+\000\000\002\198\002\161\002\204\000\000\000\000\002\198\000\000\002\204\000\000\002\166\000\000\000\000\002H\000\000\002\200\000\242\000\000\002H\000\000\002\200\000\242\000\000\002\192\001}\000\000\000\000\000\000\002\240\000\000\000\000\000\000\000\000\002\246\000\000\002\201\001~\002\012\000\000\000\242\002\201\001%\000\000\002\r\002\222\002\204\001\141\002\203\000\000\002\222\002\204\001\141\002\203\000\000\001%\002\014\000\000\006\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\224\000\000\002\252\006\215\000\000\002\224\000\000\003\002\000\000\002\201\000\000\000\000\000\000\001(\002\201\002D\002E\001u\002\222\002\198\001\141\002\203\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\002\161\002H\001\139\002\200\000\242\002D\002E\001u\002\166\000\000\000\000\001\140\002\224\001\141\001|\000\000\000\000\002\224\000\000\000\000\002\161\002\192\000\000\000\000\006\227\000\000\000\000\000\000\002\166\006\020\000\000\001*\000\000\002\204\000\000\000\000\002D\002E\001u\000\000\000\000\002\192\000\000\000\000\001*\000\000\000\000\000\000\001+\000\000\000\000\002\161\000\000\000\000\001\029\0011\000\000\000\000\003\b\002\166\000\000\001+\000\000\000\000\000\000\002\201\000\000\001\029\006\023\000\000\000\000\000\000\002\192\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\002\224\002\200\000\242\002\161\000\000\000\000\000\000\002\198\000\000\000\000\0013\002\166\000\000\0014\000\000\000\000\0015\0016\000\000\002H\000\000\002\200\000\242\0013\002\192\000\000\006\024\000\000\000\000\0015\0016\002\204\000\000\000\000\002D\002E\001u\000\000\002\198\005\226\000\000\006\028\004\208\006\026\002D\002E\001u\000\000\000\000\002\161\002H\002\204\002\200\000\242\000\000\0017\003\014\002\166\000\000\002\161\000\000\000\000\000\000\002\201\000\000\000\000\000\000\002\166\000\000\000\000\002\192\000\000\002\222\000\000\001\141\002\203\003\020\000\000\000\000\000\000\002\192\000\000\002\204\002\201\000\000\000\000\000\000\000\000\002\198\000\000\000\000\000\000\002\222\000\000\001\141\002\203\002\224\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\000\000\000\000\002\201\000\000\002\224\000\000\000\000\000\000\000\000\000\000\000\000\002\222\000\000\001\141\002\203\002D\002E\001u\000\000\000\000\002\204\000\000\002\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\161\000\000\002\198\000\000\002H\002\224\002\200\000\242\002\166\000\000\000\000\000\000\000\000\000\000\002H\003 \002\200\000\242\000\000\000\000\000\000\002\192\002\201\000\000\002D\002E\001u\000\000\002D\002E\001u\002\222\000\000\001\141\002\203\000\000\002\204\000\000\000\000\002\161\000\000\000\000\000\000\000\000\000\000\000\000\002\204\002\166\000\000\000\000\000\000\002F\002D\002E\001u\002\224\000\000\000\000\000\000\000\000\002\192\003&\000\000\000\000\000\000\000\000\000\000\002\161\002\201\000\000\000\000\003,\000\000\000\000\000\000\002\166\000\000\002\222\002\201\001\141\002\203\000\000\000\000\000\000\000\000\002\198\000\000\002\222\002\192\001\141\002\203\002D\002E\001u\000\000\000\000\000\000\002H\000\000\002\200\000\242\002\224\000\000\000\000\000\000\000\000\002\161\000\000\002D\002E\001u\002\224\000\000\000\000\002\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\198\000\000\000\000\002\192\002G\002\204\000\000\002\166\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\002H\000\000\002\200\000\242\002\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\002\201\000\000\000\000\002H\000\000\002\200\000\242\002\204\000\000\002\222\000\000\001\141\002\203\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\161\000\000\002\198\001%\0038\002\224\001&\002\204\002\166\000\000\001\237\002\201\000\000\000\000\002H\002\201\002\200\000\242\000\000\002\198\002\222\002\192\001\141\002\203\002\202\000\000\001\141\002\203\000\000\000\000\001(\002H\003>\002\200\000\242\002D\002E\001u\000\000\002\201\003o\002D\002E\001u\002\224\000\000\002\204\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\000\000\002\161\000\000\002\151\000\000\000\000\000\000\000\000\002\204\002\166\001\239\000\000\000\000\005\127\000\000\000\000\003D\002\224\000\000\000\000\002\007\001.\002\192\002\201\002\011\000\000\001\029\000\000\000\000\000\000\002\198\000\000\002\222\003J\001\141\002\203\001*\000\000\000\000\000\000\002\201\000\000\002H\000\000\002\200\000\242\002D\002E\001u\002\222\000\000\001\141\002\203\001+\000\000\000\000\002\224\000\000\000\000\001\029\0011\002\161\000\000\000\000\000\000\002\012\002D\002E\001u\002\166\000\000\002\r\000\000\002\224\002\204\000\000\000\000\000\000\000\000\000\000\002G\002\161\002\192\002\014\000\000\000\000\002\198\000\000\000\000\002\166\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\002H\003P\002\200\000\242\002\192\000\000\000\000\001=\002\201\000\000\000\000\000\000\000\000\000\000\000\000\0013\000\000\002\222\0014\001\141\002\203\0015\0016\002\175\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\224\000\000\000\000\000\000\000\000\000\000\0017\002\198\000\000\001A\002D\002E\001u\000\000\000\000\000\000\003V\002\201\000\000\002H\000\000\002\200\000\242\002\201\000\000\002\161\002\202\002\198\001\141\002\203\000\000\000\000\002\222\002\166\001\141\002\203\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\000\000\002\192\000\000\000\000\000\000\000\000\002\204\002D\002E\001u\000\000\002\224\002D\002E\001u\000\000\000\000\002D\002E\001u\000\000\000\000\002\161\000\000\000\000\000\000\002\204\002\161\000\000\000\000\002\166\003\\\002\161\000\000\000\000\002\166\000\000\000\000\002\201\000\000\002\166\000\000\000\000\002\192\000\000\000\000\000\000\002\222\002\192\001\141\002\203\003b\001%\002\192\000\000\000\000\000\000\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\002\198\000\000\002\222\000\000\001\141\002\203\002\224\000\000\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\224\000\000\000\000\000\000\000\000\001%\000\000\000\000\006\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\000\000\002\204\000\000\000\000\002\198\002D\002E\001u\000\000\002\198\000\000\002H\000\000\002\200\000\242\001(\002H\000\000\002\200\000\242\002\161\002H\000\000\002\200\000\242\000\000\003\199\000\000\002\166\000\000\000\000\000\000\001*\002\201\000\000\000\000\002D\002E\001u\000\000\000\000\002\192\002\222\002\204\001\141\002\203\000\000\000\000\002\204\001+\000\000\002\161\000\000\002\204\000\000\001\029\0011\000\000\000\000\002\166\000\000\006\020\000\000\000\000\000\000\000\000\002\224\000\000\003\209\000\000\000\000\000\000\002\192\003\219\000\000\002\201\001*\000\000\003\229\000\000\002\201\000\000\000\000\000\000\002\222\002\201\001\141\002\203\000\000\002\222\000\000\001\141\002\203\001+\002\222\000\000\001\141\002\203\000\000\001\029\006\023\000\000\000\000\000\000\000\000\002\198\000\000\000\000\002\224\0013\000\000\000\000\0014\002\224\000\000\0015\0016\002H\002\224\002\200\000\242\000\000\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002D\002E\001u\000\000\002\198\002\161\000\000\000\000\000\000\004\212\002D\002E\001u\002\166\000\000\002\161\002H\002\204\002\200\000\242\000\000\0013\000\000\002\166\006\024\002\161\002\192\0015\0016\000\000\000\000\000\000\000\000\002\166\000\000\000\000\002\192\005\226\000\000\006\027\000\000\006\026\003\238\000\000\000\000\000\000\002\192\000\000\002\204\002\201\000\000\000\000\000\000\0017\000\000\000\000\000\000\000\000\002\222\000\000\001\141\002\203\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\247\000\000\000\000\000\000\000\000\000\000\000\000\002\201\000\000\002\224\000\000\000\000\000\000\000\000\000\000\000\000\002\222\002\198\001\141\002\203\002D\002E\001u\000\000\000\000\000\000\000\000\002\198\000\000\002H\000\000\002\200\000\242\000\000\000\000\002\161\000\000\002\198\000\000\002H\002\224\002\200\000\242\002\166\000\000\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\000\000\002\192\000\000\000\000\001t\001u\002\204\002D\002E\001u\000\000\000\000\000\000\000\000\000\000\000\000\002\204\002D\002E\001u\000\000\000\000\002\161\000\000\001v\001\138\002\204\001x\001y\000\000\002\166\004\002\002\161\000\000\000\000\000\000\000\000\000\000\002\201\000\000\002\166\004\011\000\000\002\192\000\000\000\000\000\000\002\222\002\201\001\141\002\203\004\020\000\000\002\192\000\000\000\000\000\000\002\222\002\201\001\141\002\203\000\000\000\000\000\000\000\000\002\198\000\000\002\222\000\000\001\141\002\203\002\224\000\000\000\000\000\000\000\000\000\000\002H\000\000\002\200\000\242\002\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\224\000\000\000\000\000\000\000\000\000\000\002D\002E\001u\000\000\000\000\000\000\001}\001\207\001u\000\000\002\198\000\000\002\204\000\000\000\000\002\161\000\000\000\000\001~\000\000\002\198\000\242\002H\002\166\002\200\000\242\000\000\001v\002Y\000\000\001x\001y\002H\000\000\002\200\000\242\002\192\004\027\000\000\000\000\000\000\000\000\000\000\000\000\002\201\000\000\000\000\001%\000\000\001%\001&\000\000\001&\002\222\002\204\001\141\002\203\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\000\000\000\000\000\000\000\000\004Q\003\150\003\151\000\000\001(\000\000\001(\002\224\000\000\004I\000\000\005\219\001\139\000\000\004\185\000\000\002\201\000\000\000\000\004H\000\000\001\140\000\000\001\141\001|\002\222\002\201\001\141\002\203\004\188\002\198\000\000\000\000\000\000\000\000\002\222\001\142\001\141\002\203\000\000\000\000\000\000\002H\000\000\002\200\000\242\000\000\000\000\001~\002\224\001.\000\242\001.\001%\000\000\000\000\001&\000\000\000\000\002\224\000\000\000\000\000\000\000\000\000\000\001*\000\000\001*\000\000\000\000\000\000\000\000\000\000\001%\002\204\000\000\001&\004X\000\000\000\000\001(\000\000\001+\001%\001+\000\000\001&\000\000\001\029\0011\001\029\0011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004O\001(\000\000\000\000\000\000\000\000\006\210\002\201\000\000\000\000\000\000\001(\000\000\001\139\000\000\000\000\002\222\000\000\001\141\002\203\000\000\000\000\001\151\000\000\001\141\001|\000\000\001.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001=\000\000\001=\000\000\000\000\002\224\000\000\001*\0013\000\000\0013\0014\001.\0014\0015\0016\0015\0016\005\224\000\000\000\000\000\000\001.\000\000\001+\000\000\000\000\001*\000\000\000\000\001\029\0011\000\000\000\000\000\000\000\000\001%\001*\000\000\001&\0017\000\000\0017\004\192\001+\001A\000\000\000\000\000\000\000\000\001\029\0011\000\000\000\000\001+\000\000\000\000\000\000\000\000\000\000\001\029\0011\000\000\001(\000\000\001t\001u\000\000\000\000\000\000\001%\000\000\000\000\001&\000\000\000\000\001=\000\000\001t\001u\000\000\000\000\000\000\000\000\0013\001v\001\135\0014\001x\001y\0015\0016\005\237\000\000\000\000\005\240\001=\001(\001v\001\135\000\000\001x\001y\000\000\0013\007\214\001=\0014\000\000\001.\0015\0016\005\224\000\000\0013\000\000\0017\0014\000\000\001A\0015\0016\005\237\000\000\001*\007\000\000\000\000\000\000\000\001\143\000\000\001\144\007\242\000\000\007\244\000\000\0017\000\000\000\000\001A\000\000\001+\001\143\001.\001\144\007B\0017\001\029\0011\001A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\001%\000\000\000\000\001&\001+\001~\001\142\000\000\000\242\000\000\001\029\0011\001%\000\000\000\000\001&\000\000\000\000\001~\000\000\000\000\000\242\001=\000\000\000\000\000\000\000\000\001(\000\000\000\000\0013\001t\001u\0014\000\000\000\000\0015\0016\007\215\001(\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001R\000\000\000\000\000\000\001v\001\135\000\000\001x\001y\001=\000\000\000\000\000\000\000\000\000\000\0017\000\000\0013\001A\000\000\0014\000\000\001\139\0015\0016\001h\001.\000\000\000\000\000\000\000\000\001\151\000\000\001\141\001|\001\139\000\000\000\000\001.\000\000\000\000\001*\000\000\000\000\001\151\000\000\001\141\001|\001\143\0017\001\144\001\196\001A\001*\000\000\000\000\000\000\000\000\001+\000\000\000\000\000\000\000\000\000\000\001\029\0011\000\000\000\000\001t\001u\001+\000\000\000\000\000\000\000\000\000\000\001\029\0011\000\000\000\000\000\000\001t\001u\001\142\000\000\000\000\000\000\000\000\001v\001\135\000\000\001x\001y\000\000\000\000\001~\000\000\000\000\000\242\000\000\000\000\001v\001\135\000\000\001x\001y\000\000\000\000\000\000\000\000\001=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0013\001t\001u\0014\001=\000\000\0015\0016\001>\000\000\000\000\000\000\0013\000\000\001\143\0014\001\144\001\184\0015\0016\000\000\001v\001\135\000\000\001x\001y\000\000\001\143\000\000\001\144\001\181\000\000\0017\000\000\000\000\001A\000\000\000\000\000\000\000\000\000\000\001\139\000\000\000\000\0017\000\000\000\000\001V\000\000\001\142\001\151\000\000\001\141\001|\000\000\001t\001u\000\000\000\000\000\000\000\000\001~\001\142\000\000\000\242\001\143\000\000\001\144\001\180\000\000\000\000\000\000\000\000\000\000\001~\001v\001\135\000\242\001x\001y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001t\001u\000\000\000\000\000\000\000\000\000\000\001\142\001%\000\000\000\000\001&\000\000\001t\001u\000\000\000\000\000\000\000\000\001~\001v\001\135\000\242\001x\001y\000\000\001\143\000\000\001\144\001\146\000\000\000\000\001\139\001v\001\135\001(\001x\001y\000\000\001t\001u\001\151\000\000\001\141\001|\001\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\151\000\000\001\141\001|\000\000\001v\001\135\001\142\001x\001y\001\143\000\000\001\144\001\149\000\000\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\242\001\143\000\000\001\144\001\179\001.\000\000\001\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\151\000\000\001\141\001|\001*\000\000\000\000\001\142\000\000\001\237\000\000\001\143\001%\001\144\001\167\001&\000\000\000\000\000\000\001~\001\142\001+\000\242\000\000\000\000\000\000\000\000\001\029\0011\000\000\000\000\000\000\001~\001%\000\000\000\242\001&\000\000\000\000\001(\000\000\000\000\000\000\000\000\000\000\001\139\001\142\000\000\001t\001u\000\000\000\000\000\000\000\000\001\151\000\000\001\141\001|\001~\000\000\001(\000\242\000\000\000\000\001\239\000\000\000\000\005\139\001v\001\135\000\000\001x\001y\001=\002\007\000\000\000\000\000\000\002\011\000\000\001\029\0013\000\000\001\139\0014\001.\000\000\0015\0016\001\170\000\000\000\000\001\151\000\000\001\141\001|\001\139\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\001\151\001.\001\141\001|\000\000\000\000\000\000\001\143\0017\001\144\001\175\001A\001+\000\000\002\012\000\000\001*\001\139\001\029\0011\002\r\001%\000\000\000\000\001&\000\000\001\151\000\000\001\141\001|\000\000\000\000\002\014\001+\000\000\000\000\000\000\001\237\000\000\001\029\0011\000\000\001\142\001%\000\000\000\000\001&\000\000\001(\000\000\000\000\000\000\000\000\000\000\001~\000\000\000\000\000\242\000\000\000\000\000\000\000\000\001%\000\000\001=\001&\000\000\000\000\000\000\000\000\001(\000\000\0013\000\000\000\000\0014\000\000\000\000\0015\0016\001\212\000\000\000\000\000\000\000\000\001=\000\000\000\000\000\000\001(\000\000\000\000\001\239\0013\001.\005\145\0014\000\000\000\000\0015\0016\001\253\002\007\000\000\0017\000\000\002\011\001A\001\029\001*\000\000\000\000\000\000\000\000\000\000\000\000\001.\001%\001\139\000\000\001&\000\000\000\000\000\000\000\000\0017\001+\001\151\001A\001\141\001|\001*\001\029\0011\000\000\001.\000\000\001t\001u\000\000\000\000\000\000\000\000\000\000\001(\000\000\000\000\002\012\001+\000\000\001*\000\000\000\000\002\r\001\029\0011\000\000\001v\001\135\000\000\001x\001y\000\000\000\000\000\000\002\014\000\000\001+\001%\000\000\000\000\001&\000\000\001\029\0011\000\000\000\000\000\000\001=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0013\000\000\000\000\0014\001.\000\000\0015\0016\001\255\001(\000\000\000\000\000\000\001%\001=\001\143\001&\001\144\002\146\001*\000\000\000\000\0013\000\000\000\000\0014\000\000\000\000\0015\0016\002[\000\000\0017\001=\000\000\001A\001+\000\000\000\000\000\000\001(\0013\001\029\0011\0014\000\000\000\000\0015\0016\002n\001\142\000\000\000\000\000\000\0017\001.\000\000\001A\001t\001u\000\000\000\000\001~\001%\000\000\000\242\001&\000\000\000\000\000\000\001*\000\000\000\000\0017\000\000\000\000\001A\000\000\001v\001\158\000\000\001x\001y\000\000\000\000\000\000\001.\001+\001=\000\000\001(\000\000\000\000\001\029\0011\000\000\0013\000\000\000\000\0014\000\000\001*\0015\0016\002\172\000\000\000\000\001%\000\000\000\000\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001+\000\000\000\000\000\000\000\000\000\000\001\029\0011\001\139\000\000\0017\000\000\000\000\001A\000\000\000\000\001(\001\151\001.\001\141\001|\001=\001t\001u\000\000\000\000\000\000\000\000\000\000\0013\000\000\000\000\0014\001*\000\000\0015\0016\002\177\000\000\001}\000\000\000\000\001v\001\135\000\000\001x\001y\000\000\000\000\000\000\001+\001~\001=\000\000\000\242\000\000\001\029\0011\000\000\000\000\0013\0017\001.\0014\001A\000\000\0015\0016\003l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\001t\001u\001\143\000\000\001\144\003\139\000\000\000\000\0017\000\000\001+\001A\000\000\000\000\000\000\000\000\001\029\0011\001=\000\000\001v\001\135\000\000\001x\001y\000\000\0013\001t\001u\0014\000\000\001\139\0015\0016\003s\000\000\000\000\001\142\000\000\000\000\001\140\000\000\001\141\001|\000\000\000\000\000\000\001v\001\135\001~\001x\001y\000\242\000\000\000\000\000\000\000\000\000\000\0017\000\000\000\000\001A\001=\000\000\001\143\000\000\001\144\003\142\000\000\000\000\0013\000\000\000\000\0014\000\000\000\000\0015\0016\003\131\000\000\001t\001u\000\000\000\000\000\000\002D\002E\001u\000\000\000\000\000\000\001\143\000\000\001\144\003\145\000\000\001t\001u\000\000\001\142\001v\001\135\0017\001x\001y\001A\000\000\000\000\004m\000\000\000\000\001~\001\237\001\139\000\242\004u\001v\001\135\000\000\001x\001y\000\000\001\151\000\000\001\141\001|\001\142\000\000\000\000\000\000\001%\000\000\000\000\001&\000\000\000\000\000\000\000\000\001~\004v\000\000\000\242\001%\000\000\001\143\001&\001\144\003\153\000\000\000\000\000\000\001%\000\000\000\000\001&\000\000\000\000\001(\000\000\000\000\001\143\000\000\001\144\005E\000\000\000\000\000\000\001\239\000\000\001(\005\155\000\000\000\000\000\000\000\000\001\139\000\000\002\007\001(\001\142\000\000\002\011\000\000\001\029\001\151\002G\001\141\001|\000\000\000\000\000\000\001~\000\000\000\000\000\242\001\142\000\000\004y\000\000\002\200\000\242\001\b\001\139\001.\000\000\000\000\001%\001~\000\000\001&\000\242\001\151\000\000\001\141\001|\001.\000\000\000\000\001*\000\000\000\000\000\000\002\012\000\000\001.\000\000\000\000\000\000\002\r\000\000\001*\000\000\000\000\001(\004p\001+\000\000\000\000\000\000\001*\002\014\001\029\0011\000\000\000\000\000\000\000\000\001+\001%\000\000\000\000\001&\000\000\001\029\0011\001\139\001+\001%\000\000\000\000\001/\002\201\001\029\0011\001\151\000\000\001\141\001|\000\000\000\000\002\202\001\139\001\141\002\203\000\000\001(\000\000\000\000\000\000\001.\001\151\000\000\001\141\001|\001(\001%\000\000\001=\006\018\000\000\000\000\000\000\000\000\000\000\001*\0013\000\000\000\000\0014\001=\000\000\0015\0016\005V\000\000\000\000\000\000\0013\001=\000\000\0014\001+\001(\0015\0016\005\185\0013\001\029\0011\0014\000\000\001.\0015\0016\005\197\000\000\000\000\0017\000\000\001%\001A\000\000\006\018\000\000\000\000\000\000\001*\000\000\000\000\0017\000\000\000\000\001A\000\000\000\000\001*\000\000\000\000\0017\000\000\000\000\001A\000\000\001+\000\000\000\000\001(\000\000\006\020\001\029\0011\000\000\001+\001=\001%\000\000\000\000\001&\001\029\0011\000\000\0013\000\000\001*\0014\000\000\000\000\0015\0016\005\223\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001+\001(\000\000\000\000\000\000\000\000\001\029\006\023\000\000\000\000\000\000\000\000\006\020\0017\000\000\001=\001A\000\000\001%\000\000\000\000\001&\000\000\0013\000\000\000\000\0014\001*\000\000\0015\0016\005\239\0013\000\000\000\000\0014\000\000\000\000\0015\0016\000\000\000\000\000\000\000\000\001+\001(\000\000\001.\000\000\000\000\001\029\006\023\000\000\000\000\000\000\0017\000\000\000\000\001A\000\000\0013\000\000\001*\006\024\0017\000\000\0015\0016\001%\000\000\000\000\001&\000\000\000\000\000\000\000\000\005\226\000\000\006\025\001+\006\026\000\000\000\000\000\000\000\000\001\029\0011\000\000\000\000\000\000\001%\001.\0017\006\018\000\000\001(\000\000\000\000\002D\002E\001u\000\000\000\000\000\000\0013\000\000\001*\006\024\000\000\000\000\0015\0016\000\000\000\000\000\000\000\000\000\000\001(\000\000\000\000\005\226\002\153\006%\001+\006\026\000\000\000\000\000\000\000\000\001\029\0011\001=\001%\000\000\000\000\006\018\0017\000\000\000\000\0013\000\000\001.\0014\000\000\000\000\0015\0016\006\140\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\001(\000\000\000\000\000\000\006\020\000\000\001%\000\000\000\000\001&\000\000\000\000\0017\000\000\001+\001A\001=\000\000\000\000\001*\001\029\0011\000\000\000\000\0013\001%\000\000\0014\001&\000\000\0015\0016\006\158\001(\000\000\000\000\001+\001%\000\000\002G\001&\000\000\001\029\006\023\000\000\000\000\006\020\000\000\000\000\000\000\000\000\002H\001(\002\200\000\242\000\000\0017\000\000\000\000\001A\000\000\001*\000\000\000\000\001(\000\000\001=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0013\000\000\000\000\0014\001+\001.\0015\0016\006\182\000\000\001\029\006\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\0013\000\000\001.\006\024\000\000\000\000\0015\0016\000\000\000\000\0017\000\000\000\000\001A\001.\001+\005\226\001*\006\242\002\201\006\026\001\029\0011\000\000\000\000\000\000\000\000\006)\002\202\001*\001\141\002\203\0017\000\000\001+\000\000\000\000\000\000\000\000\000\000\001\029\0011\0013\000\000\000\000\006\024\001+\000\000\0015\0016\000\000\000\000\001\029\0011\000\000\006*\007\188\006+\005\226\000\000\007\012\000\000\006\026\000\000\000\000\000\000\001%\001=\000\000\001&\000\000\000\000\000\000\000\000\0017\0013\000\000\000\000\0014\000\000\000\000\0015\0016\007E\000\000\000\000\001=\006,\001%\000\000\000\000\001&\000\000\001(\0013\000\000\000\000\0014\001=\000\000\0015\0016\007\135\000\000\000\000\000\000\0013\0017\000\000\0014\001A\000\000\0015\0016\007\138\001(\000\000\000\000\000\000\000\000\000\000\001%\000\000\006-\001&\000\000\0017\000\000\000\000\001A\000\000\000\000\000\000\006.\006/\000\000\0060\000\000\0017\001.\000\000\001A\000\000\000\000\001t\001u\000\000\000\000\001(\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\006l\000\000\001.\000\000\000\000\001v\002z\000\000\001x\001y\001%\000\000\001+\001&\000\000\000\000\000\000\001*\001\029\0011\000\000\000\000\000\000\000\000\0062\007\190\000\000\000\000\000\000\0064\006>\000\000\000\000\000\000\001+\001.\000\000\001(\001t\001u\001\029\0011\006h\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\002z\006i\001x\001y\000\000\001=\000\000\000\000\001+\000\000\000\000\000\000\000\000\0013\001\029\0011\0014\000\000\000\000\0015\0016\000\000\000\000\000\000\001.\001}\000\000\001=\000\000\000\000\001t\001u\000\000\000\000\000\000\0013\006)\001~\0014\001*\000\242\0015\0016\000\000\000\000\0017\000\000\000\000\001\248\000\000\001v\002y\000\000\001x\001y\000\000\001+\000\000\000\000\000\000\001=\000\000\001\029\0011\006*\000\000\006+\0017\0013\000\000\001\250\0014\007\015\000\000\0015\0016\000\000\000\000\001}\001%\000\000\000\000\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001~\001%\000\000\000\242\006\014\000\000\006,\000\000\000\000\000\000\0017\001\139\000\000\004\187\000\000\000\000\001(\000\000\0012\000\000\001\140\000\000\001\141\001|\000\000\000\000\0013\000\000\001(\0014\000\000\000\000\0015\0016\007\016\007\015\002D\002E\001u\001}\000\000\000\000\006-\000\000\002D\002E\001u\000\000\000\000\000\000\000\000\001~\006.\006/\000\242\0060\000\000\000\000\0017\002\184\000\000\000\000\001.\000\000\001\139\000\000\000\000\002\199\002D\002E\001u\000\000\000\000\001\140\000\000\001\141\001|\001*\0061\000\000\000\000\002D\002E\001u\000\000\000\000\000\000\007\024\000\000\001*\000\000\002\223\000\000\000\000\001+\000\000\000\000\000\000\000\000\000\000\001\029\0011\0062\000\000\003\188\000\000\001+\0064\006>\000\000\000\000\000\000\001\029\0011\001%\001\139\000\000\006\021\000\000\000\000\006h\000\000\000\000\000\000\001\140\000\000\001\141\001|\000\000\000\000\000\000\000\000\001\237\000\000\000\000\000\000\002G\000\000\006i\000\000\000\000\001(\000\000\000\000\002G\000\000\007\128\000\000\002H\000\000\002\200\000\242\000\000\000\000\0013\000\000\002H\0014\002\200\000\242\0015\0016\000\000\000\000\000\000\000\000\0013\000\000\002G\0014\000\000\000\000\0015\0016\000\000\000\000\000\000\000\000\000\000\000\000\002H\002G\002\200\000\242\000\000\000\000\0017\001\239\000\000\000\000\005\164\000\000\000\000\002H\000\000\002\200\000\242\002\007\0017\000\000\000\000\002\011\001*\001\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\001+\002\201\002\202\000\000\001\141\002\203\001\029\0011\000\000\000\000\002\202\000\000\001\141\002\203\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\012\000\000\002\201\000\000\000\000\000\000\002\r\000\000\000\000\000\000\000\000\002\202\000\000\001\141\002\203\002\201\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\002\202\000\000\001\141\002\203\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0013\000\000\000\000\0014\000\000\000\000\0015\0016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0017")) + ((16, "\001\218\0011\000%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\150\000\000\000\000\001+\002\226\000)\001\011\000s\0004\000X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\000\000\000\000\000\000\000\000\000\000\000.\000\000\000\000\000\000\000\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\194\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\014\001\000\000\000\001<\001D\003\028\000\000\000\000\000\000\001\242F\210\001X\002\030\000\016\000\000\000\000\000\000\005R\000\000\000\000\001\196\000\000\000\000\000\000\000\000\002\252\000\000\001\204\000\000\000\000\000\000\000\000\000\000\000\007\000\000\003L\003\018\004D\000\000\000\000\n4\014\014\000\000\000\000\005\218\000\000\006F\000\000O\192\003H\003D\000\000\000\000\001\246\002$\005\140\007\192\004\176\003\018\003\018\000@\003\206\000$\002N\002v <\000\000\000\000\003\188V\156\000\000\003l\000\000\000\130\003\176\000\000\00285p\004\192\000\000\000\127\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\254\003f\000\000\000\000\000\0001\018\t\016\000\000b\136\000\000\000\000\003JV\180\000\000\000\000\000\000\000\000\000\000\000\000\003 \000\000\000\000\005\026\006.\000\000\029\142\005\026\005\020\000\000\000\000\000\000%\156\000\000%\192\005\026\005\026\005\026\000\000\000\000\003\184\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0006\162\000\000\002\150\004h\000\000WR\002\182`\188\000\000\000\000\002\214\000\000\000\000\000\000\003 \000\000\000\000\000\000 \150\000\000\000\000\000\000\000\000\000\000\000\000\000\029\004`\000\000\000\000\000\000\003 \004\186\000\000\003 V\248\003 \000\000\000\000E(\000\000\000\000\005P\000\000\000\000\000\000\000\000%>\004T\002\220\004X7\000\000\000\000\000\000\000\000\000W\164\003 \000\0007P\000\000\000\000\000\000W\206\003 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\132\000\000\004\182\005d\005V\000\000\000\000\000\000\000\000\005$\000\000\000\000\006D\000\141\006V\006\160\b2\000\000\000\000\000\000\004\214\004\230\006r\000\154\000\000\000\000\000\186\006\128E\150\005\016\007j\001\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\158 \250\005@\007\130!F\n\170%>7\166\000\000E\184\011\144\000\000\000\000\000\000W\226\003 \000\0007l\000\000\000\000\000\000X<\003 \000\000\000\000!\194\",\000\000\000\210\000\000\000\000\000\000\000\000\006\022Xz\003 \006:8r\005\154\007\206c\006\000\000\005Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\006\000\000\000\000\000\000\000\000\007&8\176\000\000\000\000c\138\000\0009\000\000\000\000\000\000\000X\184\003 \000\000\000\000c\208\000\000\000\000\000\000\000\000\006\n\007\2149\026\b\158\000\000\000\000c\218\000\0009>\000\000\000\000\006\\\000\000\000\000\000\000:\b\000\000\000\000\000\000X\210\003 \000\000\000\000d\026\000\000\000\000\006\\:F\000\000\006\\:\132\006\132\0076\007\158\000\000\000\000d4\000\000\000\000\000\000\000\000\006\\\000\000\000\000:\212\000\000\000\000\000\000\000\000YN\003 \000\000\000\000d\152\000\000\000\000\006\\Yv\000\000\003 \000\000\000\000:\238\000\000\006\\\002\022\000\000\000\000\006\\\006\\\000\000\006\\\000\000\000\000\006\\\000\000\000\000\",\000\000\000\000\000\000\000\000\006\\\"\168\000\000\000\000\006\\\000\000\001F\007\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000d\164\000\000\000\000\000\000\007\n;\018\000\000\006\\\000\000\000\000\000\000\000\000;d\000\000\000\000\000\000Y\202\003 \000\000\000\000d\242\000\000\000\000\007\n\000\000;\220\000\000\000\000\000\000Y\226\003 \000\000\000\000e\020\000\000\000\000\007\nex\000\000\022\000\000\000\000G\150\000\000\000\000\011\192\000\000\000\000\000\000h\028\000\000\n\132\t*\r\198\000\000%\254\000\000hz\000\000\nJ'\026\000\000\000\000\ndG\206\n\152\t0\014r\000\000\ndH\028\n\178\t4\014\176\000\000\nd\000\000h\154\000\000H>\n\180\t6\015X\000\000\nd'h\004$'\154\000\000\000\000Hp\n\182\tP\015\204\000\000\ndH\196\n\184\tR\0162\000\000\ndH\204\n\204\tT\016@\000\000\ndI\242\n\206\t\\\017\000\000\000\ndI\250\n\212\tj\017P\000\000\ndJ8\n\230\t\128\017l\000\000\ndJ\162\n\236\t\140\018:\000\000\ndJ\230\n\240\t\144\018r\000\000\ndK2\n\242\t\164\018\176\000\000\ndK\212\n\252\t\170\019B\000\000\ndL\012\0118\t\176\019\\\000\000\ndLZ\011:\t\178\019\208\000\000\ndL\188\011b\t\180\020\026\000\000\ndL\200\011f\t\182\020\238\000\000\ndMj\011j\t\194\021\002\000\000\ndM\184\011\184\t\210\021z\000\000\ndM\204\011\206\t\222\021\242\000\000\ndNZ\011\228\t\230\022\012\000\000\ndN\140\000\000\000\000\r<\000\000\000\000\000\000h\192\000\000\012\002\t\240\022\132\000\000\ndN\160\012\024\t\252\022\250\000\000\nd\n\002\023\020(@(\210\000\000\004\186\012\198\000\000[\184\003 )<\000\000\000\000\012X\000\000\\\000\003 )\130\000\000\000\000)\222\000\000\000\000\011\006\000\000\000\000*\016\000\000\000\000\000\000\000\000\\&\003 +\006\000\000\007\n+\150\000\000>6\000\000\000\000\000\000\000\000\\\148\003 \000\000\000\000f\002\000\000\000\000\007\n>\160\000\000\006\\\002\176\000\000\000\000\000\000\004\028\005*\000\000\000\000\000\000\nd\nd?\012\000\000\000\000\000\000\000\000N\252\0126\n\018\023\140\000\000\nd?\186\000\000\000\000\000\000O\136\012T\n\026\023\166\000\000\nd?\226\000\000\000\000\000\000P*\012X\n(\024\026\000\000\nd\006r+\212\000\000\000\000\000\000Pp\012\130\n*\024\150\000\000\nd+\220\000\000\000\000\000\000P\152\012\156\n<\025\000\000\000\nd,>\000\000\000\000\000\000P\204\012\160\nP\025|\000\000\nd\000\000\000\000@&\000\000\000\000\000\000Q\024\012\172\nV\025\240\000\000\nd@\144\000\000\000\000\000\000Qn\012\182\np\026\n\000\000\ndA@\000\000\000\000\000\000R:\012\216\n\160\026\130\000\000\nd\000\000R\\\012\236\n\168\026\156\000\000\nd\000\000\000\025\000\000\000\000\nd\012\246\000\000\000\000,\144\000\000-b\000\000\000\000\000\000\000\000\000\000-\196\000\000\000\000-\206\000\000\000\000\000\000\000\000A\132\000\000\000\000A\238\000\000\000\000B4\000\000\000\000\000\000\012\254\n\178\027\016\000\000\nd\000\000\000\000.\018\000\000.\204\000\000\000\000\000\000\000\000\000\000R\220\r\002\n\198\027*\000\000S\016\r\028\n\206\027\162\000\000\nd\ndS2\r\"\n\210\027\188\000\000\nd\000\000\000\000B\158\000\000\000\000B\226\000\000\000\000SF\000\000\000\000\014\174\000\000\000\000\000\000h\230\000\000\r\158\n\214\0280\000\000\nd\000\000\007\n/p\000\000\000\000/\152\000\000.:\000\000\000\000F\000\000\000\000\000\000\000C\136\000\000\000\000\000\000\000\000C\146\000\000\000\000\000\000\000\000\014\202\000\000\000\000\000\000\r\178\000\000\002\230\000\000\011\228\014t\000\000\004\244\000\000\000\000\000\000\000\000\000\000\000\000\002Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\184\n\240\028J\000\000\nd\000\000\014\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\254\005t\000\014/\220\000\000\r\226\011\004\014\142\001\164\006\174\000\014)\156\000\000\000(\007\172\000\014\000\0000l\000\000\005h\000\000\014\002\011.\004\154\000\000\000\000\000\000\000\000\000\000\014$\001v\000\179\000\000\000\000\000\000U.\000\000aT\000\000\011@\000\000\011F\000\000\000\000\000\000\000\000\004\006\000\000\000\000\000\000&\232\005\026\000\000\005\026\012\226\000\000\003,\000\000'P\005\026\005\026\000\0002\156\005\026\005\026\011R\000\0001*\000\000\000\000\011T\0150\000\000\029P\005\230\000\000\000\000\000\000\000\000\000\000\000\000\014J\011h\028\194\000\000\nd\000\000\000\000\000\000\000\000\000\000\014N\011l\bj\000\014\000\000+\"\000\000\000(\000\000\015\168\000\000\000\000\000\000\000\000\000\000\028\220\000\000\000\000\000\000\000\000\014X\011x\029j\000\000\000\000\000\000-\012\000\000\000(\000\000-8\000\000\000(\000\000/$\000(\000\000\nd\000\000\000\0000P\000\000\000(\000\000\002\156\000\213\007\142\007\216\007\\\000\233\007\146\007\225\000\234\004<\003e\000\235\000\236\003f\006H\005~\007\218\001w\000\206\000\220\0032\002\194\007\226\006\253\000\213\000\216\001\003\006\145\000\239\003t\b)\001\200\0034\002\148\007\219\000\221\007\214\005\129\000\222\005f\006\146\007\216\005f\006\136\006\152\b\175\001w\001\200\003e\000\224\000\177\003f\b\131\003v\007\218\b\222\002\211\001\172\0032\007\204\001\002\002\210\002\211\001\172\000\227\bm\0008\003t\007`\001\200\0034\004\r\007\219\b\225\b\226\005f\0035\b\228\001\015\004>\007\207\000\228\001&\000\247\003;\006\145\005$\000\213\000\231\007\208\b\230\003v\005t\005s\005u\006\246\005s\005u\006\146\007\004\007\005\007\204\006\178\002\210\002\211\001\172\b\245\000\152\000\224\000\162\002\142\004<\0014\003P\004<\001\167\b\237\000\189\0035\b\238\007\r\007\209\007\207\000\227\007\014\005\138\003;\002{\007\n\005s\005u\007\208\b\246\007\004\007\005\000\206\000\152\000\232\b=\002\142\000\228\000\213\000\231\000\206\004<\000\233\000\213\000\231\000\234\000\213\000\216\000\235\000\236\007\006\007\022\003P\007\210\001:\007\014\005\138\003~\003`\0008\007\209\bx\by\007\211\b\223\001s\0031\001w\001w\001\153\002\214\004<\0031\001w\000\240\b\b\000\221\000\255\bv\bU\002}\006B\000\206\007\239\b\233\000\206\007\014\005\138\000\213\000\216\002\149\000\213\000\231\000\232\002\153\007\210\000\213\002\180\005b\005\138\003`\000\233\007\226\001U\000\234\007\211\005 \000\235\000\236\001+\001Y\004=\002\214\bw\0031\001w\007\214\000\206\000\221\005\213\000\217\007\216\005Y\000\213\000\231\b\250\005G\001h\003e\002\193\000\221\003f\001w\000\240\007\218\004<\000\255\006\150\0032\002\154\001w\006U\002{\001V\007\226\002\155\000\248\003t\001p\001\200\0034\005\243\007\219\000\206\001\171\001\172\002\148\002\156\007\214\000\213\000\216\004<\000\246\007\216\000\227\007\204\004<\002\210\002\211\001\172\003e\003v\001\127\003f\001\173\001\205\007\218\001\175\001\176\005X\0032\000\228\0035\007\205\007\235\001\160\007\207\000\213\000\231\003t\003;\001\200\0034\005\230\007\219\007\208\007\221\002\194\002}\004\189\002 \002\176\001w\001\153\001\210\005\144\000\227\007\204\002\149\002\210\002\211\001\172\002\153\003v\000\213\001\020\002\148\001\163\000\227\003P\001\211\001\242\b\237\000\228\0035\b\238\b\166\007\209\007\207\000\213\000\231\b\132\003;\006\141\005\235\000\228\bF\007\208\b\241\007\178\004\200\000\213\000\231\007\185\bS\000\233\000n\005\249\000\234\b\t\005X\000\235\000\236\001\209\002\180\001_\004\128\002\154\002\030\001w\001\153\003P\007\210\002\155\001a\001\181\bw\003`\001w\007\209\007\181\b3\007\211\001\202\007\181\002\156\004<\bX\001i\002\214\007\181\0031\001w\005O\b4\001n\002\193\000\233\007\183\001w\000\234\005X\007\183\000\235\000\236\007\168\007\225\004\160\007\183\000\233\0008\001\214\000\234\001\215\007\210\000\235\000\236\006\002\001\172\003`\005f\007\226\006\017\005\138\007\211\000\152\007\184\000\184\002\142\000\254\007\184\002\214\004<\0031\001w\007\214\007\184\001\020\001\171\001\172\007\216\bO\006\020\001\198\b\244\001w\001\020\003e\b\159\001\213\003f\001\236\001\231\007\218\001\200\001\179\005\225\0032\001\173\001\205\001\020\001\175\001\176\007\226\002\194\004<\003t\001\020\001\200\0034\bB\007\219\005\240\007\018\005s\005u\007\204\007\214\002\210\002\211\001\172\004<\007\216\ba\006\020\004<\005f\001w\001\210\003e\003v\002\180\003f\0035\007\205\007\218\b\167\007\207\004<\0032\b\128\003;\006v\001\235\001\211\002\248\007\208\007\231\003t\000\206\001\200\0034\001q\007\219\007\127\000\213\000\216\001w\006\217\b/\005T\001\200\007\144\002\193\001\128\b\160\001w\002$\000\221\005X\003P\000\222\003v\001\171\001\172\006\154\0022\001\209\007\209\bh\005s\005u\000\152\004<\002\129\002\142\006\218\007\027\006\219\001\181\002c\005\231\001w\001\173\001\205\006\171\001\175\001\176\002h\b\161\004\213\b;\001\164\001\200\b\168\000\213\001\203\000\152\006\179\006\231\002\142\006Y\005\138\007\210\005\146\000\206\000\221\000\239\003`\000\222\006\220\000\213\000\231\007\211\001\020\001\214\002\180\001\215\000\206\b`\002\214\002\194\0031\001w\000\213\000\231\001\020\000\221\007w\001\206\000\225\000\224\002n\002p\002x\000\206\000\221\007\234\b\169\000\222\006\148\000\213\000\231\005\236\006\221\005\163\000\227\001\198\002\193\005\139\002\205\001w\007\226\006\253\006\222\006\223\001\231\006\224\001\200\001\179\006\148\004<\001\209\000\228\001\020\002\208\007\214\b\170\001\020\000\213\000\231\007\216\001s\006\148\001\181\001w\001x\001w\003e\000\224\007\028\003f\005E\006\253\007\218\002\222\b\171\000\152\0032\006\241\002\142\006\250\005\138\002m\000\227\007\000\002\243\003t\002\246\001\200\0034\002\171\007\219\007\137\001\020\001\020\001\020\002\252\006\226\000\224\002\135\000\228\007\172\006\228\006\238\000\227\002\194\000\213\000\231\000\232\003\025\003v\001\020\002\180\000\227\bo\007\024\000\233\003*\003/\000\234\005\241\000\228\000\235\000\236\007\029\004<\001\020\000\213\000\231\007\139\000\228\001\198\000\221\007\025\002\180\000\222\000\213\000\231\0038\003L\001\231\005\215\001\200\001\179\002\193\007\140\001\020\001w\000\240\002\137\007\142\000\255\007\004\007\005\007\143\003\\\000\232\001\020\003j\001\020\003p\003y\000\221\005\253\000\233\000\222\002\193\000\234\001\020\001w\000\235\000\236\007\006\007\022\003\132\003\138\003\144\007\014\005\138\006\253\003\150\001\020\007\004\007\005\002\152\000\233\000\232\003\156\000\234\001\020\001\020\000\235\000\236\002\170\000\233\006\012\000\240\000\234\003\162\000\255\000\235\000\236\007\006\007\022\003\168\000\224\003\174\007\014\005\138\006\253\001\020\001\020\002\194\002\210\002\211\001\172\003\180\000\240\007\144\003\186\000\227\b}\003\192\003\198\003\204\003\210\000\240\001\020\0035\000\255\001\020\003\216\001\020\001\020\002\194\000\224\003;\000\228\007\151\003\222\005>\001w\005\169\000\213\000\231\003\228\001\020\001\020\001\020\003\234\000\227\005:\001\020\002\204\003\248\0066\002\210\002\211\001\172\001\020\003\254\000\213\002\207\004\002\002\221\003P\002\242\000\228\002\245\004\025\001\020\004J\002\251\000\213\000\231\004T\001\020\003\007\001\020\005\029\b-\005\138\004^\004i\003\004\003\n\005%\003\021\001\020\007\004\007\005\001\020\004s\000\232\001\020\001\020\001\020\001\020\003\024\003\031\003)\000\233\004}\001\020\000\234\004\137\000n\000\235\000\236\007\006\007\022\001\020\0052\003`\007\014\005\138\003.\001\020\004\147\007\004\007\005\001\020\0037\000\232\003?\002\214\001\020\0031\001w\002]\001\172\000\233\001\020\000\240\000\234\001\020\000\255\000\235\000\236\bk\bl\004\026\004\157\001\020\007\014\005\138\004\164\001\020\003K\001\173\002\231\004\203\001\175\001\176\001\020\001\020\002\213\003b\002\210\002\211\001\172\004\219\003U\000\240\001\020\004\224\000\255\004\231\005)\004\253\0031\001w\001\153\0035\001\020\003[\004?\001\020\002-\004<\004\025\003;\0057\003e\003s\003i\003f\005\011\000\221\005F\001\020\006\190\005L\0032\005\001\0023\001\171\001\172\003o\003x\003\131\003\137\003t\001s\001\200\0034\001w\001x\004<\005 \003P\003\143\003\149\005\\\001\020\003\155\001\173\001\205\001\020\001\175\001\176\004<\005m\001\020\003\161\005o\003v\003\167\001\209\003\173\003\179\005\135\005\140\001\020\007\137\003\185\0032\001\020\004\214\001\020\001\181\001\020\005\152\001w\005\162\0033\001\210\001\200\0034\006\025\005\182\000n\005!\001s\001\020\005\214\001w\001x\003`\001\171\001\172\001\020\001\211\002\248\001\020\003\191\003\197\005\220\005\004\005\t\002\214\007\139\0031\001w\004<\0024\000\227\0025\006\028\001\173\001\205\005\227\001\175\001\176\007\137\001\020\003\203\007\140\003\209\005\233\003\215\006$\007\142\000\228\001\020\001\209\007\153\001\020\004<\000\213\000\231\003\026\003b\001\020\001\020\000\221\004<\001\181\001\198\001\210\001w\005\252\001\171\001\172\001\020\004<\001\020\001\231\003:\001\200\001\179\007\139\001\020\006\001\006\016\001\211\002\248\001\020\003e\003\221\004<\003f\001\173\001\205\005v\001\175\001\176\007\140\0032\001\020\003\227\005|\007\142\001\214\006(\001\215\007\171\003t\006\024\001\200\0034\003\233\003\241\001\020\0039\006\027\006\"\000\233\001\209\004<\000\234\001\020\001\210\000\235\000\236\006&\003\247\006,\0067\0062\001\181\003v\006>\001w\006S\001\198\006I\003\253\001\211\002\248\006X\003:\004\b\001\020\001\231\006M\001\200\001\179\006]\000\240\004\015\006g\004I\000\227\006m\001\020\001\020\006x\001\171\001\172\006\129\002\210\002\211\001\172\006\131\004<\001\214\004S\001\215\004]\000\228\001\209\001\171\001\172\006\149\006\135\000\213\000\231\001\173\001\205\001\020\001\175\001\176\001\181\005\029\004<\001w\001\020\001\020\006\161\004h\005%\001\173\001\205\003:\001\175\001\176\001\020\001\198\001\020\003M\001\020\006\156\004r\001\020\004|\001\020\001\231\001\210\001\200\001\179\004\136\001\020\006\173\003]\000\221\004\146\005&\000\222\001\214\001\020\001\215\001\210\001\020\001\211\002\248\001\020\006\183\004<\001\020\006\208\004<\006\230\004\156\000\233\006\166\001\020\000\234\001\211\002\248\000\235\000\236\b]\004\163\005\130\004<\001\020\001\020\004<\004\175\006\240\001\198\004\202\004<\004\218\006\206\006\252\001\209\001\171\001\172\001\231\002\213\001\200\001\179\007\016\004<\005\133\004\223\007 \001\181\004\230\001\209\001w\005)\001\020\0031\001w\001\153\001\173\001\205\003:\001\175\001\176\001\181\004<\001\020\001w\007&\000\224\001\171\001\172\004<\007*\007F\003:\007n\007\170\004\246\006\214\001\020\003k\006\227\001\020\000\227\001\020\001\214\007s\001\215\001\210\001\173\001\205\007\154\001\175\001\176\005 \006\235\000\221\007x\007\002\001\214\000\228\001\215\001\020\0073\001\211\002\248\000\213\000\231\001\020\004<\007\150\003q\004\252\005\025\007~\007V\001\020\001\198\007\134\001\210\001\020\0032\002{\004<\005\"\0056\001\231\004<\001\200\001\179\0033\001\198\001\200\0034\007p\001\211\002\248\001\209\005<\001\020\001\231\007{\001\200\001\179\001\020\001\020\005K\001\020\001\020\001\181\007\175\004<\001w\001\171\001\172\004<\000\232\004<\001\020\005M\003:\007\196\005[\001\020\000\233\005\134\004<\000\234\001\209\001\020\000\235\000\236\bd\001\173\001\205\004<\001\175\001\176\002}\007\157\001\181\002\172\001\020\001w\000\227\001\214\001\020\001\215\002\149\005\142\001\020\003:\002\153\007\169\000\213\003z\000\240\007\173\005\151\000\255\005\161\000\228\005\172\001\210\004<\005\181\004<\000\213\000\231\b\016\bN\001\171\001\172\005\226\004<\b\031\001\214\001\198\001\215\001\211\002\248\007\177\001\020\b0\b<\007\182\001\231\007\194\001\200\001\179\005\219\001\173\001\205\001\020\001\175\001\176\007\201\002\154\004<\004<\005\221\bJ\bL\002\155\005\224\007\215\004<\004<\001\198\005\239\004<\004<\001\209\003\133\005\229\002\156\005\238\001\231\005\234\001\200\001\179\001\210\001\171\001\172\001\181\000\233\005\237\001w\000\234\001\171\001\172\000\235\000\236\005\251\007\222\003:\007\232\001\211\002\248\006\000\006\011\001\020\001\173\001\205\bA\001\175\001\176\001\020\006\n\001\173\001\205\006\015\001\175\001\176\006\026\001\020\001\020\bO\006%\006!\001\214\0061\001\215\001s\003\139\006+\001w\001x\bq\b\127\001\209\003\145\001\210\001\020\001\020\006-\b\139\b\231\006E\001\210\b\242\b\247\001\181\0069\006D\001w\006?\006C\001\211\002\248\006R\006W\001\198\003:\007\137\001\211\002\248\006\182\006\\\006_\006c\001\231\006k\001\200\001\179\006r\006}\006\181\006\174\006\175\006\180\006\184\006\185\006\216\006\209\006\210\006\215\006\237\001\214\006\233\001\215\001\209\006\234\006\236\007\023\001\171\001\172\006\251\001\209\006\255\007\001\007\139\007\003\001\181\007\015\007\031\001w\007!\007\"\007'\001\181\007+\007/\001w\003:\001\173\001\205\007\140\001\175\001\176\001\198\003:\007\142\007A\007H\007L\007\190\007d\007y\001\231\007\145\001\200\001\179\007\155\007\203\001\171\001\172\003\151\007\197\001\214\007\198\001\215\007\202\007\217\b\015\001\210\001\214\b\024\001\215\001\171\001\172\b\030\b+\b?\b@\001\173\001\205\bD\001\175\001\176\bp\001\211\002\248\bt\b~\b\130\b\217\000\000\000\000\001\173\001\205\001\198\001\175\001\176\000\000\000\000\000\000\003\157\001\198\000\000\001\231\000\000\001\200\001\179\000\000\001\210\000\000\001\231\000\000\001\200\001\179\003\163\007\204\000\000\001\209\000\000\000\000\000\000\000\000\001\210\000\000\001\211\002\248\000\000\000\000\000\000\001\181\000\000\000\000\001w\b\228\000\000\000\000\007\207\000\000\001\211\002\248\003:\000\000\000\000\000\000\000\000\007\208\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\001\215\000\000\001\181\000\000\001\209\001w\000\000\000\000\001\171\001\172\007\209\000\000\000\000\003:\000\000\000\000\001\181\000\000\000\000\001w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\001\173\001\205\001\198\001\175\001\176\000\000\000\000\000\000\001\171\001\172\001\214\001\231\001\215\001\200\001\179\000\000\000\000\007\210\000\000\000\000\000\000\000\000\003\169\000\000\001\214\000\000\001\215\007\211\001\173\001\205\001\210\001\175\001\176\000\000\000\000\000\000\000\000\000\000\000\000\001\171\001\172\000\000\001\198\000\000\000\000\000\000\001\211\002\248\b\229\000\000\003\175\001\231\000\000\001\200\001\179\000\000\001\198\000\000\001\210\001\173\001\205\000\000\001\175\001\176\000\000\001\231\007\213\001\200\001\179\000\000\000\000\000\000\000\000\000\000\001\211\002\248\000\000\000\000\000\000\001\209\007\214\003\181\000\000\000\000\000\000\007\216\000\000\000\000\000\000\001\210\000\000\001\181\000\000\000\000\001w\000\000\000\000\000\000\007\218\000\000\000\000\000\000\003:\000\000\000\000\001\211\002\248\001\209\000\000\000\000\000\000\000\000\001\171\001\172\000\000\000\000\007\219\000\000\000\000\001\181\000\000\000\000\001w\000\000\000\000\001\171\001\172\001\214\000\000\001\215\003:\000\000\001\173\001\205\000\000\001\175\001\176\000\000\001\209\000\000\000\000\000\000\000\000\000\000\000\000\001\173\001\205\000\000\001\175\001\176\001\181\000\000\000\000\001w\003\187\001\214\000\000\001\215\000\000\001\198\000\000\003:\001\210\000\000\000\000\000\000\000\000\003\193\001\231\000\000\001\200\001\179\000\000\000\000\000\000\001\210\000\000\000\000\001\211\002\248\000\000\000\000\000\000\001\171\001\172\000\000\001\214\001\198\001\215\000\000\000\000\001\211\002\248\000\000\000\000\000\000\001\231\000\000\001\200\001\179\000\000\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\001\209\000\000\000\000\000\000\000\000\000\000\000\000\001\198\000\000\001\171\001\172\000\000\001\181\001\209\003\199\001w\001\231\000\000\001\200\001\179\000\000\000\000\001\210\003:\000\000\001\181\000\000\000\000\001w\001\173\001\205\000\000\001\175\001\176\000\000\000\000\003:\000\000\001\211\002\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\001\215\003\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\000\000\001\214\000\000\001\215\002\210\002\211\001\172\000\000\000\000\000\000\000\000\001\209\000\000\000\000\000\000\001\211\002\248\000\000\000\000\000\000\001\198\000\000\000\000\001\181\000\000\000\000\001w\004\167\000\000\001\231\000\000\001\200\001\179\001\198\003:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\231\000\000\001\200\001\179\000\000\000\000\001\209\000\000\004\168\000\000\000\000\000\000\000\000\001\171\001\172\000\000\000\000\001\214\001\181\001\215\000\000\001w\000\000\001\171\001\172\000\000\000\000\000\000\000\000\003:\000\000\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\000\001\198\000\000\000\000\000\000\000\000\001\214\003\211\001\215\000\000\001\231\000\000\001\200\001\179\002\213\001\210\000\000\003\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\002\214\000\000\0031\001w\000\000\001\211\002\248\000\000\000\000\001\171\001\172\000\000\001\198\000\000\000\000\001\211\002\248\000\000\000\000\000\000\000\000\001\231\000\000\001\200\001\179\000\000\000\000\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\000\000\001\209\000\000\004\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\209\000\000\001\181\003\223\000\000\001w\000\000\000\000\000\000\000\000\000\000\001\210\001\181\003:\000\000\001w\000\221\000\000\000\000\006\197\0032\001\171\001\172\003:\000\000\000\000\000\000\001\211\002\248\0033\000\000\001\200\0034\000\000\001\171\001\172\000\000\000\000\001\214\000\000\001\215\001\173\001\205\000\000\001\175\001\176\000\000\000\000\001\214\000\000\001\215\000\000\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\000\001\209\000\000\000\000\003\229\000\000\000\000\000\000\000\000\000\000\000\000\001\198\001\210\001\181\000\000\000\000\001w\003\235\000\000\000\000\001\231\001\198\001\200\001\179\003:\001\210\000\000\000\000\001\211\002\248\001\231\000\000\001\200\001\179\000\000\001\171\001\172\000\000\000\000\000\000\000\000\001\211\002\248\000\000\000\000\000\227\000\000\000\000\000\000\001\214\000\000\001\215\000\000\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\000\001\209\000\228\000\000\000\000\000\000\000\000\000\000\000\213\000\231\000\000\000\000\000\000\001\181\001\209\000\000\001w\003\249\000\000\000\000\000\000\001\198\000\000\000\000\003:\001\210\001\181\000\000\000\000\001w\001\231\000\000\001\200\001\179\001\171\001\172\000\000\003:\000\000\000\000\000\000\001\211\002\248\000\000\000\000\000\000\000\000\004\003\001\172\001\214\000\000\001\215\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\001\214\000\000\001\215\000\000\000\233\004\031\001\205\000\234\001\175\001\176\000\235\000\236\001\209\000\000\003\255\000\000\000\000\000\000\000\000\001\198\000\000\000\000\001\210\000\000\001\181\000\000\000\000\001w\001\231\000\000\001\200\001\179\001\198\000\000\002-\003:\000\240\000\000\001\211\002\248\000\000\001\231\000\000\001\200\001\179\001\171\001\172\000\000\000\000\000\000\004$\0023\000\000\000\000\000\000\000\000\000\000\000\000\001\171\001\172\001\214\000\000\001\215\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\000\001\209\000\000\000\000\000\000\000\000\002{\000\000\001\173\001\205\000\000\001\175\001\176\001\181\001\209\000\000\001w\004K\000\000\000\000\000\000\000\000\001\198\000\000\003:\001\210\001\181\000\000\000\000\001w\004U\001\231\000\000\001\200\001\179\000\000\000\000\000\221\001\210\000\000\000\000\001\211\002\248\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\000\000\000\000\001\211\002\248\000\000\000\000\000\000\004:\004;\0024\002}\0025\000\000\002~\001\173\001\205\000\000\001\175\001\176\000\000\002\149\000\000\001\209\000\000\002\153\000\000\000\213\000\000\000\000\001\198\000\000\000\000\000\000\000\000\001\181\001\209\004_\001w\001\231\000\000\001\200\001\179\001\198\000\000\001\210\003:\000\000\001\181\000\000\000\000\001w\001\231\000\000\001\200\001\179\000\000\001\171\001\172\003:\000\000\001\211\002\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\154\001\214\000\000\001\215\000\227\000\000\002\155\001\173\001\205\002{\001\175\001\176\000\000\000\000\001\214\000\000\001\215\002{\002\156\000\000\000\000\000\228\000\000\000\000\001\209\000\000\000\000\000\213\000\231\004j\bQ\000\000\000\000\001\198\000\000\000\000\001\181\001\210\000\000\001w\001\171\001\172\001\231\000\000\001\200\001\179\001\198\003:\000\000\000\000\000\000\000\000\000\000\001\211\002\248\001\231\000\000\001\200\001\179\000\000\001\173\001\205\000\000\001\175\001\176\002}\000\000\000\000\002\147\000\000\000\000\000\000\001\214\002}\001\215\002\149\002\158\000\000\000\000\002\153\000\000\000\213\004t\002\149\000\000\000\233\001\209\002\153\000\234\000\213\001\210\000\235\000\236\000\000\000\000\000\000\000\000\000\000\001\181\000\000\000\000\001w\001\171\001\172\001\198\000\000\001\211\002\248\000\000\003:\000\000\000\000\000\000\001\231\000\000\001\200\001\179\bO\000\000\000\000\000\000\000\000\001\173\001\205\002\154\001\175\001\176\000\000\000\000\000\000\002\155\000\000\002\154\000\000\001\214\000\000\001\215\000\000\002\155\001\209\000\000\000\000\002\156\000\000\004~\000\000\000\000\000\000\000\000\000\000\002\156\001\181\001\210\000\000\001w\000\000\000\000\000\000\000\000\000\000\001\171\001\172\003:\000\000\000\000\000\000\001\198\000\000\001\211\002\248\000\000\000\000\000\000\001\171\001\172\001\231\000\000\001\200\001\179\000\000\001\173\001\205\000\000\001\175\001\176\000\000\000\000\001\214\000\000\001\215\000\000\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\001\209\004\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\000\000\000\000\001\181\000\000\004\148\001w\000\000\000\000\001\198\000\000\000\000\000\000\001\210\003:\000\000\001\211\002\248\001\231\000\000\001\200\001\179\000\000\001\171\001\172\000\000\000\000\000\000\000\000\001\211\002\248\000\000\000\000\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\000\000\001\173\001\205\000\000\001\175\001\176\000\000\001\209\000\000\000\000\000\000\000\000\000\000\000\000\001\173\001\205\000\000\001\175\001\176\001\181\001\209\000\000\001w\004\158\000\000\000\000\000\000\000\000\000\000\001\198\003:\001\210\001\181\000\000\000\000\001w\004\165\000\000\001\231\000\000\001\200\001\179\000\000\003:\001\210\000\000\000\000\001\211\002\248\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\000\000\000\000\001\211\002\248\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\000\000\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\001\209\000\000\000\000\000\000\000\000\001\173\001\205\001\198\001\175\001\176\000\000\000\000\001\181\001\209\004\204\001w\001\231\000\000\001\200\001\179\001\198\000\000\001\210\003:\000\000\001\181\000\000\004\220\001w\001\231\000\000\001\200\001\179\000\000\000\000\001\210\003:\000\000\001\211\002\248\000\000\000\000\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\001\211\002\248\000\000\000\000\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\000\000\001\173\001\205\000\000\001\175\001\176\000\000\001\209\000\000\000\000\000\000\000\000\000\000\000\000\001\173\001\205\001\198\001\175\001\176\001\181\001\209\000\000\001w\004\225\000\000\001\231\000\000\001\200\001\179\001\198\003:\001\210\001\181\000\000\000\000\001w\004\232\000\000\001\231\000\000\001\200\001\179\000\000\003:\001\210\000\000\000\000\001\211\002\248\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\000\000\000\000\001\211\002\248\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\000\000\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\001\209\000\000\000\000\000\000\000\000\001\173\001\205\001\198\001\175\001\176\000\000\000\000\001\181\001\209\004\254\001w\001\231\000\000\001\200\001\179\001\198\000\000\001\210\003:\000\000\001\181\000\000\0058\001w\001\231\000\000\001\200\001\179\000\000\000\000\001\210\003:\000\000\001\211\002\248\000\000\000\000\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\001\211\002\248\000\000\000\000\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\000\000\001\173\001\205\000\000\001\175\001\176\000\000\001\209\000\000\000\000\000\000\000\000\000\000\000\000\001\173\001\205\001\198\001\175\001\176\001\181\001\209\000\000\001w\005\153\000\000\001\231\000\000\001\200\001\179\001\198\003:\001\210\001\181\000\000\000\000\001w\005\176\000\000\001\231\000\000\001\200\001\179\000\000\003:\001\210\000\000\000\000\001\211\002\248\000\000\000\000\000\000\004\003\001\172\000\000\001\214\000\000\001\215\000\000\000\000\001\211\002\248\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\000\000\004\031\001\205\000\000\001\175\001\176\000\000\000\000\000\000\001\209\000\000\000\000\000\000\000\000\001\173\001\205\001\198\001\175\001\176\000\221\000\000\001\181\001\209\000\000\001w\001\231\000\000\001\200\001\179\001\198\002-\000\000\003:\000\000\001\181\000\000\005\183\001w\001\231\000\000\001\200\001\179\000\000\000\000\001\210\003:\004$\0023\000\000\000\000\000\000\000\000\000\000\000\000\004\003\001\172\000\000\001\214\000\000\001\215\001\211\002\248\000\000\000\000\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\000\000\004\031\001\205\000\000\001\175\001\176\000\000\001\209\000\000\000\000\000\000\000\000\000\000\000\000\001\173\001\205\001\198\001\175\001\176\001\181\001\209\000\000\001w\000\000\000\000\001\231\000\000\001\200\001\179\001\198\002-\000\000\001\181\000\000\000\227\001w\b\017\000\000\001\231\000\000\001\200\001\179\000\000\003:\001\210\000\000\004$\0023\000\000\000\000\000\000\000\228\004:\005\143\0024\000\000\0025\000\213\000\231\000\000\001\211\002\248\000\000\000\000\000\000\004\003\001\172\000\000\001\214\000\000\001\215\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\209\000\000\000\000\000\000\000\000\004\031\001\205\001\198\001\175\001\176\000\000\000\000\001\181\001\209\000\000\001w\001\231\000\000\001\200\001\179\001\198\000\000\000\000\000\000\000\000\001\181\000\000\000\000\001w\001\231\000\000\001\200\001\179\000\000\002-\000\233\003:\000\000\000\234\000\000\000\000\000\235\000\236\000\000\000\000\004:\007z\0024\000\000\0025\004$\0023\000\000\000\000\000\000\000\000\000\000\000\000\001\171\001\172\000\000\001\214\000\000\001\215\000\000\000\000\000\000\000\244\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\173\001\205\001\198\001\175\001\176\000\000\001\209\000\000\001\171\001\172\000\000\001\231\000\000\001\200\001\179\001\198\000\000\000\000\001\181\000\000\000\000\001w\b \000\000\001\231\000\000\001\200\001\179\001\173\001\205\001\210\001\175\001\176\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002{\001\211\002\248\0035\000\000\b%\004:\007\156\0024\000\000\0025\003;\000\000\001\210\000\000\000\000\000\000\b\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\211\002\248\000\000\000\000\000\000\001\209\000\000\000\000\000\000\000\000\000\000\003P\001\198\000\000\000\000\000\000\000\000\001\181\000\000\000\000\001w\001\231\000\000\001\200\001\179\000\000\000\221\002}\003:\000\222\002\160\000\000\001\006\001\209\000\000\b\184\000\000\002\149\000\000\000\000\000\000\002\153\000\000\000\213\000\000\001\181\000\000\000\000\001w\002\210\002\211\001\172\001\007\001\214\000\000\001\215\003:\000\000\001\b\003`\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\002\214\003;\0031\001w\000\000\000\000\000\000\b\"\000\000\000\000\001\214\000\000\001\215\000\000\001\198\002\154\000\000\000\000\000\000\000\000\000\000\002\155\000\000\001\231\000\000\001\200\001\179\000\000\000\224\000\000\003P\000\221\003b\002\156\000\222\000\000\000\000\001\006\000\000\000\000\000\000\000\000\001\198\000\227\000\000\000\000\000\000\001\012\000\000\000\000\000\000\001\231\000\000\001\200\001\179\000\000\000\000\001\007\003e\000\000\000\228\003f\000\000\001\029\000\000\000\000\000\213\000\231\0032\000\000\000\000\000\000\000\000\002\210\002\211\001\172\000\000\003t\003`\001\200\0034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\002\214\000\000\0031\001w\000\000\000\000\003;\000\000\000\000\000\000\000\000\003v\005\177\000\000\000\224\000\000\000\000\000\000\000\000\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\232\000\000\000\000\000\227\000\000\000\000\003b\001\012\000\233\003P\0035\000\234\000\000\000\000\000\235\000\236\001\024\000\000\003;\000\000\000\228\000\000\000\000\000\000\005\174\000\000\000\213\000\231\000\000\000\000\002{\000\000\003e\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\240\000\000\0032\000\255\000\000\000\000\000\000\003P\000\000\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\003`\001\171\001\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\214\000\000\0031\001w\000\000\000\000\003v\000\232\000\000\001\173\001\205\000\000\001\175\001\176\000\000\000\233\000\000\002}\000\234\002'\002\188\000\235\000\236\001\024\000\000\000\000\003`\002\149\000\000\000\000\000\000\002\153\003b\000\213\000\000\000\000\000\000\000\000\002\214\001\210\0031\001w\001\171\001\172\000\000\000\000\000\000\000\240\000\000\000\000\000\255\000\000\000\000\000\000\000\000\001\211\002\027\000\000\003e\000\000\000\000\003f\001\173\001\205\000\000\001\175\001\176\000\000\0032\000\000\003b\000\000\002\024\000\000\000\000\000\000\002\154\003t\000\000\001\200\0034\000\000\002\155\000\000\000\000\000\000\000\000\000\000\001\209\000\000\000\221\000\000\001\210\006\194\002\156\000\221\003e\000\000\000\000\003f\001\181\003v\000\000\001w\001\171\001\172\0032\000\000\001\211\002\027\000\000\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\000\000\000\000\bZ\001\173\001\205\000\000\001\175\001\176\002\210\002\211\001\172\000\000\000\000\002\029\000\000\001\214\000\000\001\215\003v\000\000\001\209\000\000\000\000\0035\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003;\001\181\001\210\000\000\001w\000\000\005\145\000\000\000\000\0035\000\000\006\196\000\000\000\000\000\000\000\000\001\198\003;\001\211\002\027\000\000\001\171\001\172\005D\000\000\001\231\000\227\001\200\001\179\003P\000\000\000\227\000\000\000\000\000\000\000\000\000\000\001\214\000\000\001\215\000\000\001\173\003\014\000\228\001\175\001\176\003P\000\000\000\228\000\213\006\199\001\209\000\000\000\000\000\213\000\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\181\000\000\000\000\001w\000\000\000\000\001\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003`\001\231\000\000\001\200\001\179\002\210\002\211\001\172\000\000\000\000\000\000\000\000\002\214\000\000\0031\001w\000\000\003`\000\000\000\000\0035\000\000\001\214\000\000\001\215\000\000\000\000\000\000\003;\002\214\000\233\0031\001w\006\200\005/\000\233\000\235\000\236\000\234\000\000\000\000\000\235\000\236\001\180\003b\000\000\006\146\000\000\006\205\000\000\006\202\000\000\000\000\000\000\001\198\001\181\000\000\003P\001w\000\000\000\000\003b\000\240\001\231\000\000\001\200\001\179\000\254\000\000\000\000\003e\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\003e\000\000\003t\003f\001\200\0034\000\000\003\016\000\000\000\000\0032\000\000\002\210\002\211\001\172\002{\000\000\000\000\003`\003t\000\000\001\200\0034\000\000\000\000\000\000\003v\0035\003\017\000\000\002\214\000\000\0031\001w\000\000\003;\001\198\002\210\002\211\001\172\000\000\005\000\000\000\003v\000\000\001\199\000\000\001\200\001\179\000\000\000\000\000\000\0035\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003;\000\000\003b\000\000\003P\000\000\004\215\000\000\000\000\0035\000\000\002}\001\171\001\172\002\226\000\000\000\000\003;\000\000\000\000\000\000\002\149\000\000\004\207\000\000\002\153\000\000\000\213\003e\003P\000\000\003f\001\173\001\205\000\000\001\175\001\176\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003P\003t\000\000\001\200\0034\000\000\003`\000\000\000\000\000\000\000\000\000\000\002\210\002\211\001\172\000\000\001\210\000\000\002\214\000\000\0031\001w\000\000\000\000\002\154\003v\000\000\000\000\000\000\000\000\002\155\003`\001\211\003\000\000\000\005\159\002\210\002\211\001\172\000\000\000\000\000\000\002\156\002\214\000\000\0031\001w\000\000\003`\000\000\003b\0035\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003;\002\214\000\000\0031\001w\000\000\001\209\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003b\003e\001\181\000\000\003f\001w\000\000\000\000\000\000\000\000\000\221\0032\000\000\003P\000\000\000\000\000\000\003b\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\003e\000\000\000\000\003f\000\000\000\000\003\003\000\000\001\171\001\172\0032\002\213\001\214\000\000\001\215\000\000\000\000\003e\003v\003t\003f\001\200\0034\002\214\000\000\0031\001w\0032\001\173\001\205\000\000\001\175\001\176\000\000\000\000\003`\003t\000\000\001\200\0034\000\000\000\000\000\000\003v\001\198\000\000\000\000\002\214\000\000\0031\001w\000\000\000\000\001\231\000\227\001\200\001\179\000\221\001\210\000\000\003v\002\210\002\211\001\172\000\000\002\210\002\211\001\172\000\000\000\000\000\000\000\228\000\227\000\000\001\211\002\248\0035\000\213\000\231\003b\0035\000\000\000\000\000\000\003;\000\000\000\000\000\000\003;\000\228\004\181\0032\000\000\000\000\004\172\000\213\000\231\000\000\000\000\000\000\0033\000\000\001\200\0034\000\000\004\028\000\000\001\209\003f\004\206\000\000\000\000\000\000\003P\000\000\0032\000\000\003P\000\000\001\181\000\000\000\000\001w\000\000\003t\000\000\001\200\0034\000\000\000\000\003_\000\000\000\221\000\000\000\000\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\000\000\000\000\000\227\000\000\000\000\003v\002\210\002\211\001\172\000\000\000\233\000\000\001\214\000\234\001\215\000\000\000\235\000\236\003`\000\228\000\000\0035\003`\000\000\000\253\000\213\000\231\000\000\000\000\003;\002\214\000\000\0031\001w\002\214\003d\0031\001w\000\000\000\000\000\000\000\221\000\252\000\000\001\198\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\000\001\231\000\000\001\200\001\179\000\000\003P\000\000\0035\000\000\003b\000\000\000\000\000\000\003b\000\000\003;\000\000\002\210\002\211\001\172\000\000\003\128\000\000\000\000\000\227\000\000\000\000\000\000\000\000\000\000\000\233\000\000\0035\000\234\000\000\003e\000\235\000\236\003f\003e\003;\000\228\003f\000\000\003P\0032\003\127\000\213\000\231\0032\000\000\000\000\000\000\003`\003t\000\000\001\200\0034\003t\000\000\001\200\0034\003\020\000\000\000\000\002\214\000\000\0031\001w\003P\000\000\000\000\000\000\000\000\000\000\000\000\000\227\000\000\003v\000\000\000\000\000\221\003v\000\000\006\194\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003`\000\228\000\000\000\000\000\000\003b\000\000\000\213\000\231\001\171\001\172\000\000\002\214\000\233\0031\001w\000\234\000\000\004\020\000\235\000\236\000\000\000\000\000\000\000\000\003`\004\023\000\000\000\000\001\173\003\014\003e\001\175\001\176\003f\000\000\000\000\002\214\000\000\0031\001w\0032\000\000\000\000\003b\005x\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\003\015\000\000\000\000\000\000\000\000\000\000\006\196\000\000\000\000\000\233\000\000\000\000\000\234\003b\003e\000\235\000\236\003f\003v\000\000\000\000\000\227\000\000\000\000\0032\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\000\000\000\228\003e\0035\005\128\003f\000\221\000\213\006\199\000\222\000\000\003;\0032\000\000\000\000\001\180\000\000\004\005\000\000\000\000\003v\003t\000\000\001\200\0034\000\000\000\000\001\181\000\221\000\000\001w\006\194\000\000\000\000\000\000\000\000\000\000\006\139\000\000\000\000\003P\002\210\002\211\001\172\000\000\003v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003;\000\233\003\016\000\000\006\200\000\000\004\012\000\235\000\236\000\000\000\000\000\000\002\210\002\211\001\172\000\224\000\000\006\146\000\000\006\204\000\000\006\202\004\024\004\030\003`\000\000\000\000\0035\000\000\003P\000\227\001\198\000\000\000\240\000\000\003;\002\214\006\196\0031\001w\001\199\004\019\001\200\001\179\000\000\000\000\000\000\000\228\000\000\000\000\000\000\000\000\000\227\000\213\000\231\000\000\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003P\000\000\000\000\000\000\003b\000\228\000\000\000\000\002{\0035\000\000\000\213\006\199\003`\000\000\000\000\000\000\003;\000\000\002\210\002\211\001\172\000\000\004\022\000\000\002\214\000\000\0031\001w\000\000\003e\000\000\000\000\003f\0035\000\000\000\000\000\000\000\000\000\232\0032\000\000\003;\000\000\000\000\000\000\003P\000\233\003`\003t\000\234\001\200\0034\000\235\000\236\006\144\000\000\003b\000\000\000\000\002\214\000\000\0031\001w\002}\000\000\000\000\005R\000\000\000\233\000\000\003P\006\200\003v\002\149\000\235\000\236\000\000\002\153\000\240\000\213\000\000\000\255\003e\000\000\006\146\003f\006\203\000\000\006\202\000\000\000\000\003b\0032\003`\000\000\000\000\000\000\000\000\000\000\000\000\000\240\003t\000\000\001\200\0034\002\214\000\221\0031\001w\006\194\000\000\000\000\002\210\002\211\001\172\000\000\000\000\003e\003`\000\000\003f\000\000\002\154\000\000\000\000\003v\000\000\0032\002\155\000\000\002\214\000\000\0031\001w\000\000\004\167\003t\003b\001\200\0034\002\156\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\007\141\000\000\003v\000\000\003b\003e\003;\000\000\003f\000\000\000\000\000\000\004#\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\006\196\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\004\028\000\000\000\000\003f\004\029\003P\000\227\000\000\000\000\000\000\0032\000\000\000\000\000\000\002{\000\000\000\000\000\000\003v\003t\000\000\001\200\0034\000\228\002\213\002\210\002\211\001\172\000\000\000\213\006\199\000\000\000\000\000\000\000\000\000\000\002\214\000\000\0031\001w\0035\000\000\000\000\003v\000\000\000\000\000\000\000\000\003;\000\000\000\000\000\000\000\000\003`\004&\000\000\002\210\002\211\001\172\000\000\002\210\002\211\001\172\000\000\000\000\002\214\000\000\0031\001w\000\000\002}\0035\000\000\005\167\000\000\0035\004\170\003P\000\000\003;\002\149\000\000\000\000\003;\002\153\004c\000\213\000\233\000\000\004m\006\200\000\000\000\000\000\235\000\236\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\006\146\0032\006\201\000\000\006\202\003P\002\210\002\211\001\172\003P\0033\000\000\001\200\0034\000\000\000\000\000\240\000\000\000\000\000\000\003e\0035\003`\003f\000\000\000\000\002\154\000\000\000\000\003;\0032\000\000\002\155\000\000\002\214\004w\0031\001w\000\000\003t\000\000\001\200\0034\000\000\002\156\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003`\000\000\000\000\000\000\003`\003P\000\000\000\000\000\000\0035\003v\000\000\002\214\003b\0031\001w\002\214\003;\0031\001w\000\000\000\000\000\000\004\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003e\000\000\000\000\003f\000\000\003b\000\000\003P\000\000\003b\0032\000\000\000\000\000\000\003`\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\000\000\002\214\000\000\0031\001w\000\000\003e\000\000\000\000\003f\003e\000\000\000\000\003f\000\000\000\000\0032\000\000\003v\000\000\0032\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\003t\003`\001\200\0034\003b\000\000\002\210\002\211\001\172\000\000\002{\000\000\000\000\002\214\000\000\0031\001w\000\000\000\000\000\000\003v\0035\000\000\000\000\003v\000\000\000\000\000\000\000\000\003;\003e\000\000\002{\003f\000\000\004\178\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\003b\000\000\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\002\210\002\211\001\172\003P\000\000\002\210\002\211\001\172\000\000\000\000\000\000\002}\000\000\000\000\005\188\0035\003e\000\000\003v\003f\0035\002\149\000\000\003;\000\000\002\153\0032\000\213\003;\004\184\000\000\000\000\000\000\002}\004\187\003t\005\192\001\200\0034\002\210\002\211\001\172\000\000\002\149\000\000\000\000\000\000\002\153\000\000\000\213\000\000\003`\003P\000\000\0035\000\000\000\000\003P\000\000\003v\002]\001\172\003;\002\214\000\000\0031\001w\000\000\004\209\000\000\002\154\000\000\000\000\000\000\000\000\000\000\002\155\000\000\000\000\000\000\001\173\002\231\000\000\001\175\001\176\000\000\000\000\000\000\002\156\000\000\000\000\003P\002\154\000\000\000\000\003b\000\000\000\000\002\155\000\000\003`\000\000\000\000\000\000\000\000\003`\000\000\000\000\000\000\002-\002\156\000\000\002\214\000\000\0031\001w\000\000\002\214\000\000\0031\001w\003e\000\000\000\000\003f\005\001\0023\000\000\000\000\000\000\000\000\0032\002\210\002\211\001\172\000\000\000\000\000\000\000\000\003`\003t\000\000\001\200\0034\003b\000\000\000\000\0035\000\000\003b\000\000\002\214\000\000\0031\001w\003;\000\000\000\000\000\000\001\209\000\000\004\212\000\000\000\000\003v\000\000\000\000\000\000\000\000\000\000\003e\001\181\000\000\003f\001w\003e\000\000\000\000\003f\000\000\0032\000\000\000\000\003b\003P\0032\000\000\000\000\000\000\003t\000\000\001\200\0034\000\000\003t\000\000\001\200\0034\000\000\000\000\005\b\000\000\000\000\000\000\000\000\000\000\0024\000\000\0025\003e\000\000\000\000\003f\003v\002\210\002\211\001\172\000\000\003v\0032\000\000\000\000\000\000\002{\000\000\000\000\000\000\000\000\003t\0035\001\200\0034\003`\000\000\002\210\002\211\001\172\003;\000\000\001\198\000\000\000\000\000\000\005\003\002\214\000\000\0031\001w\001\231\0035\001\200\001\179\003v\000\000\000\000\000\000\000\000\003;\000\000\000\000\000\000\000\000\000\000\005\006\000\000\000\000\003P\000\000\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\000\003b\000\000\000\000\002}\000\000\000\000\005\195\0035\000\000\000\000\003P\000\000\000\000\002\149\000\000\003;\000\000\002\153\000\000\000\213\000\000\005I\000\000\000\000\000\000\000\000\003e\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\000\000\0032\000\000\003`\000\000\000\000\000\000\000\000\000\000\003P\003t\000\000\001\200\0034\000\000\002\214\000\000\0031\001w\000\000\000\000\000\000\000\000\003`\000\000\000\000\000\000\002\154\000\000\002\210\002\211\001\172\000\000\002\155\003v\002\214\000\000\0031\001w\000\000\000\000\000\000\000\000\000\000\0035\002\156\000\000\003b\000\000\000\000\000\000\000\000\003;\000\000\002\210\002\211\001\172\003`\005W\000\000\000\000\000\000\002{\000\000\000\000\000\000\000\000\003b\000\000\002\214\000\000\0031\001w\003e\000\000\000\000\003f\005\179\000\000\000\221\000\000\003P\000\222\0032\000\000\001\025\000\000\000\000\000\000\000\000\000\000\000\000\003t\003e\001\200\0034\003f\000\000\000\000\000\000\000\000\003b\000\000\0032\000\000\001\027\000\000\000\000\000\000\000\000\006\139\000\000\003t\000\000\001\200\0034\003v\000\000\002}\000\000\000\221\005\202\000\000\000\222\002\210\002\211\001\172\003e\002\149\003`\003f\000\000\002\153\000\000\000\213\000\000\003v\0032\000\000\0035\000\000\002\214\000\000\0031\001w\000\000\003t\003;\001\200\0034\000\000\000\000\000\224\005\137\002\213\000\000\000\000\000\000\000\000\002\210\002\211\001\172\000\000\002\210\002\211\001\172\002\214\000\227\0031\001w\003v\001\012\000\000\003b\0035\000\000\003P\002\154\0035\000\000\000\000\000\000\003;\002\155\000\228\000\000\003;\000\000\005\247\000\000\000\213\000\231\007.\000\224\000\000\002\156\000\000\000\000\000\000\003e\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\000\227\0032\000\000\003P\002\210\002\211\001\172\003P\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\003`\000\228\000\000\0035\000\000\000\000\000\000\000\213\000\231\000\000\0032\003;\002\214\000\000\0031\001w\000\232\0071\003v\0033\000\000\001\200\0034\000\000\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\006\193\000\000\000\000\003`\000\000\000\000\000\000\003`\003P\000\000\000\000\000\000\003b\000\000\000\000\002\214\000\000\0031\001w\002\214\000\000\0031\001w\000\000\000\240\001\005\000\000\000\255\000\000\000\000\000\000\000\000\000\000\000\233\000\000\000\000\000\234\000\000\003e\000\235\000\236\003f\000\000\000\000\000\000\000\000\000\000\003b\0032\000\000\000\000\003b\000\000\000\000\000\000\000\000\003`\003t\000\000\001\200\0034\000\221\000\000\000\000\000\000\000\240\000\000\000\000\002\214\000\000\0031\001w\000\000\003e\000\000\000\000\003f\003e\000\000\000\000\003f\003v\000\000\0032\000\000\000\000\000\000\0032\002\210\002\211\001\172\000\000\003t\000\000\001\200\0034\003t\000\000\001\200\0034\003b\000\000\000\000\0035\000\000\000\000\000\000\000\000\002\210\002\211\001\172\003;\000\000\000\000\000\000\000\000\003v\007@\000\000\000\000\003v\000\000\000\000\0035\000\000\000\000\003e\000\000\000\000\003f\000\000\003;\000\000\000\000\000\000\000\000\0032\007C\000\000\000\000\003P\000\000\002\210\002\211\001\172\003t\000\000\001\200\0034\000\227\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\003P\000\000\000\000\000\000\000\000\003;\000\228\000\000\000\000\003v\000\000\007P\000\213\000\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\204\000\000\003`\000\000\000\000\000\000\000\000\000\000\003P\002\210\002\211\001\172\000\000\000\000\002\214\000\000\0031\001w\007\205\000\000\000\000\007\207\003`\000\000\0035\000\000\000\000\000\000\000\000\000\000\007\208\000\000\003;\000\000\002\214\000\000\0031\001w\007S\000\000\000\000\000\000\000\000\000\000\000\233\000\000\003b\000\234\000\000\000\000\000\235\000\236\000\000\000\000\000\000\000\000\003`\000\000\002\210\002\211\001\172\003P\007\209\000\000\000\000\000\000\003b\000\000\002\214\000\000\0031\001w\003e\0035\000\000\003f\005\132\000\000\000\000\000\000\000\000\003;\0032\000\000\000\000\000\000\000\000\007h\000\000\000\000\000\000\003t\003e\001\200\0034\003f\000\000\007\210\000\000\000\000\003b\000\000\0032\000\000\002\210\002\211\001\172\007\211\000\000\003`\003P\003t\000\000\001\200\0034\003v\000\000\000\000\000\000\0035\000\000\002\214\000\000\0031\001w\000\000\003e\003;\000\000\003f\000\000\007\212\000\000\007k\000\000\003v\0032\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003t\007\213\001\200\0034\000\000\000\000\000\000\000\000\003b\0035\000\000\003P\000\000\003`\000\000\007\214\000\000\003;\000\000\000\000\007\216\000\000\000\000\007o\003v\002\214\000\000\0031\001w\000\000\000\000\000\000\000\000\007\218\003e\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\000\000\0032\000\000\003P\002\210\002\211\001\172\000\000\007\219\000\000\003t\000\000\001\200\0034\003b\000\000\003`\000\000\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003;\002\214\000\000\0031\001w\000\000\b\143\003v\000\000\000\000\000\000\000\000\000\000\003e\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\000\221\0032\003`\000\222\000\000\000\000\001\025\003P\001\171\001\172\003t\003b\001\200\0034\002\214\000\000\0031\001w\001\171\001\172\000\000\000\000\000\000\000\000\000\000\000\000\001\027\000\000\001\173\003\014\000\000\001\175\001\176\000\000\003v\000\000\000\000\003e\001\173\001\205\003f\001\175\001\176\000\000\000\000\000\000\003b\0032\002\210\002\211\001\172\000\000\000\000\000\000\000\000\003`\003t\000\000\001\200\0034\000\000\000\000\000\000\0035\000\000\000\000\000\000\002\214\001\210\0031\001w\003;\003e\000\224\000\000\003f\000\000\b\145\000\000\000\000\003v\000\000\0032\000\000\001\211\b\206\000\000\b\208\000\227\000\000\000\000\003t\001\012\001\200\0034\000\000\000\000\000\000\000\000\003b\003P\000\000\000\000\000\000\000\000\000\228\000\000\001\180\000\000\000\000\000\000\000\213\000\231\000\000\000\000\003v\000\000\001\209\000\000\001\181\000\000\000\000\001w\000\000\000\000\003e\000\000\000\000\003f\001\181\000\000\000\000\001w\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\003`\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\222\000\000\007\191\001\006\002\214\000\232\0031\001w\000\000\001\214\000\000\001\215\003v\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\001\024\000\000\001\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\198\000\000\000\000\000\000\000\000\003b\001\171\001\172\000\000\001\199\001\198\001\200\001\179\000\000\000\240\000\000\000\000\000\255\000\000\001\231\000\000\001\200\001\179\007\193\000\000\000\000\001\173\001\205\000\000\001\175\001\176\003e\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\224\000\000\0032\000\000\000\000\000\000\000\000\001\171\001\172\000\000\000\000\003t\000\000\001\200\0034\000\227\000\000\001\210\000\000\001\012\000\000\001\171\001\172\000\000\000\000\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\228\001\211\b\003\003v\000\000\000\000\000\213\000\231\000\000\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\001\209\000\000\000\000\000\000\002-\000\000\003;\001\211\007\245\000\000\000\000\000\000\001\181\000\000\000\000\001w\005\156\000\000\000\000\000\000\002.\0023\000\232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\233\000\000\000\000\000\234\000\000\003P\000\235\000\236\001\024\000\000\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\001\215\000\000\001\181\000\000\001\209\001w\000\000\000\000\000\000\000\000\000\000\000\000\000\240\000\000\000\000\000\255\001\181\000\000\000\000\001w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\198\000\000\000\000\003`\000\000\000\000\001\171\001\172\001\214\001\231\001\215\001\200\001\179\000\000\000\000\002\214\000\000\0031\001w\000\000\000\000\0024\000\000\0025\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\000\000\000\000\000\000\001\171\001\172\000\000\001\198\000\000\000\000\000\000\000\000\000\000\000\000\003b\000\000\001\231\000\000\001\200\001\179\000\000\001\198\000\000\001\210\001\173\001\205\000\000\001\175\001\176\000\000\001\231\000\000\001\200\001\179\000\000\000\000\000\000\000\000\000\000\001\211\002\031\000\000\000\000\004A\001\171\001\172\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\001\210\000\000\000\000\001\171\001\172\003t\000\000\001\200\0034\000\000\001\173\001\205\000\000\001\175\001\176\000\000\001\211\002\019\001\209\000\000\000\000\001\171\001\172\001\173\001\205\000\000\001\175\001\176\000\000\003v\001\181\000\000\000\000\001w\000\000\000\000\000\000\000\000\000\000\000\000\001\210\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\001\209\000\000\000\000\000\000\001\210\000\000\000\000\001\211\002\016\000\000\000\000\000\000\001\181\000\000\000\000\001w\000\000\001\214\000\000\001\215\001\211\002\014\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\211\001\212\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\001\198\001\215\000\000\001\181\001\209\000\000\001w\000\000\000\000\001\231\000\000\001\200\001\179\000\000\000\000\000\000\001\181\000\000\000\000\001w\000\000\000\000\001\209\000\000\001\171\001\172\000\000\000\000\000\000\000\000\000\000\001\198\000\000\000\000\001\181\000\000\000\000\001w\000\000\001\214\001\231\001\215\001\200\001\179\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\001\214\000\000\001\215\001\171\001\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\001\198\001\215\000\000\001\210\001\173\001\205\000\000\001\175\001\176\001\231\000\000\001\200\001\179\001\198\000\000\001\171\001\172\000\000\000\000\001\211\001\227\000\000\001\231\000\000\001\200\001\179\000\000\000\000\000\000\000\000\000\000\001\198\000\000\000\000\001\210\001\173\001\205\000\000\001\175\001\176\001\231\000\000\001\200\001\179\000\000\000\000\000\000\000\000\000\000\000\000\001\211\001\230\001\209\000\000\000\000\001\171\001\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\181\001\210\000\000\001w\001\171\001\172\000\000\000\000\000\000\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\000\001\211\002\r\001\209\000\000\000\000\001\171\001\172\001\173\001\205\000\000\001\175\001\176\000\000\000\000\001\181\000\000\000\000\001w\000\000\001\214\000\000\001\215\000\000\000\000\001\210\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\001\209\000\000\000\000\000\000\001\210\000\000\000\000\001\211\002\001\000\000\000\000\000\000\001\181\001\171\001\172\001w\000\000\001\214\001\198\001\215\001\211\002\t\001\210\000\000\000\000\000\000\000\000\001\231\000\000\001\200\001\179\000\000\000\000\001\173\001\205\000\000\001\175\001\176\001\211\0021\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\001\198\001\215\000\000\001\181\001\209\000\000\001w\000\000\000\000\001\231\000\000\001\200\001\179\002-\000\000\000\000\001\181\000\000\000\000\001w\000\000\000\000\001\209\000\000\001\171\001\172\000\000\000\000\000\000\002A\0023\001\198\000\000\000\000\001\181\000\000\000\000\001w\000\000\001\214\001\231\001\215\001\200\001\179\001\173\001\205\000\000\001\175\001\176\000\000\000\000\000\000\001\214\000\000\001\215\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\209\002\210\002\211\001\172\000\000\000\000\000\000\001\214\001\198\001\215\002-\000\000\001\181\000\000\000\000\001w\0035\001\231\000\000\001\200\001\179\001\198\001\171\001\172\003;\000\000\002N\0023\000\000\000\000\001\231\000\000\001\200\001\179\005A\000\000\000\000\000\000\000\000\001\198\000\000\000\000\001\173\001\205\000\000\001\175\001\176\0024\001\231\0025\001\200\001\179\000\000\003P\000\000\000\000\000\000\000\000\002{\000\000\001\209\001\171\001\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002-\001\181\000\000\000\000\001w\000\000\000\000\005\149\000\000\001\198\001\173\003\014\000\000\001\175\001\176\000\000\002\\\0023\001\231\000\000\001\200\001\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003`\000\000\000\000\002\210\002\211\001\172\0024\003\015\0025\000\000\000\000\000\000\002\214\002}\0031\001w\005\206\000\000\0035\000\000\001\209\000\000\000\000\002\149\000\000\000\000\003;\002\153\000\000\000\213\000\000\000\000\001\181\000\000\000\000\001w\004\234\000\000\000\000\001\198\000\000\000\000\000\000\000\000\003b\000\000\000\000\000\000\001\231\000\000\001\200\001\179\000\000\000\000\000\000\003P\002\210\002\211\001\172\001\180\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0024\000\000\0025\000\000\001\181\002\154\004A\001w\001\171\001\172\000\000\002\155\005-\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003t\002\156\001\200\0034\000\000\000\000\001\173\001\205\000\000\001\175\001\176\001\198\000\000\000\000\003`\000\000\002\210\002\211\001\172\000\000\001\231\003\016\001\200\001\179\003v\000\000\002\214\000\000\0031\001w\000\000\0035\000\000\000\000\000\000\000\000\001\210\000\000\000\000\003;\000\000\004\024\004\030\000\000\000\000\000\000\000\000\000\000\000\000\004D\001\198\000\000\001\211\003+\000\000\002\210\002\211\001\172\003b\001\199\000\000\001\200\001\179\000\000\000\000\000\000\000\000\002\213\003P\000\000\0035\000\000\001\171\001\172\000\000\000\000\000\000\000\000\003;\002\214\000\000\0031\001w\000\000\000\000\001\209\000\000\004A\003O\000\000\000\000\000\000\001\173\001\205\0032\001\175\001\176\001\181\000\000\000\000\001w\000\000\000\000\003t\000\000\001\200\0034\003P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003`\000\000\000\000\000\000\000\000\002-\000\000\000\000\000\000\001\171\001\172\003v\002\214\000\000\0031\001w\000\000\001\214\000\000\001\215\000\000\0043\0023\000\000\000\000\000\000\000\000\000\000\000\000\001\173\001\205\0032\001\175\001\176\000\000\000\000\000\000\000\000\000\000\003`\0033\000\000\001\200\0034\003b\000\000\000\000\000\000\000\000\001\198\000\000\002\214\000\000\0031\001w\001\209\000\000\000\000\001\231\001\210\001\200\001\179\002\210\002\211\001\172\000\000\000\000\001\181\000\000\000\000\001w\000\000\000\000\004A\000\000\001\211\0046\0035\000\000\000\000\0032\000\000\000\000\003b\000\000\003;\000\000\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\004C\000\000\000\000\000\000\000\000\000\000\000\000\0024\000\000\0025\000\000\000\000\000\000\001\209\000\000\000\000\000\000\004A\003v\003P\000\000\001\171\001\172\000\000\0032\001\181\000\000\000\000\001w\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\000\000\007T\000\000\001\198\001\173\003\014\000\000\001\175\001\176\000\000\000\000\000\000\001\231\000\000\001\200\001\179\000\000\002\210\002\211\001\172\003v\000\000\000\000\000\000\001\214\000\000\001\215\000\000\000\000\000\000\003`\003\015\0035\000\000\000\000\000\000\000\000\002\210\002\211\001\172\003;\000\000\002\214\000\000\0031\001w\000\000\000\000\000\000\000\000\004N\000\000\0035\000\000\000\000\000\000\001\198\000\000\000\000\000\000\003;\000\000\000\000\000\000\000\000\001\231\000\000\001\200\001\179\003P\004X\002\210\002\211\001\172\003b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\180\000\000\000\000\0035\000\000\000\000\003P\000\000\000\000\000\000\000\000\003;\001\181\000\000\000\000\001w\000\000\000\000\000\000\000\000\004A\004\131\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\003`\000\000\003t\000\000\001\200\0034\003P\002\210\002\211\001\172\000\000\000\000\002\214\000\000\0031\001w\000\000\003\016\000\000\000\000\003`\000\000\0035\000\000\000\000\000\000\003v\000\000\000\000\000\000\003;\000\000\002\214\000\000\0031\001w\000\000\004\024\004\030\000\000\004\141\000\000\000\000\000\000\003b\000\000\001\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003`\001\199\000\000\001\200\001\179\003P\000\000\000\000\000\000\000\000\003b\000\000\002\214\000\000\0031\001w\000\000\000\000\000\000\004A\000\000\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\004A\000\000\002\210\002\211\001\172\003b\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\003`\000\000\003t\0035\001\200\0034\003v\000\000\000\000\000\000\000\000\003;\002\214\000\000\0031\001w\000\000\000\000\000\000\000\000\004A\004\151\002\210\002\211\001\172\000\000\003v\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003t\0035\001\200\0034\003P\000\000\000\000\000\000\003b\003;\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\192\000\000\000\000\000\000\000\000\003v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004A\003P\002\210\002\211\001\172\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003`\003t\0035\001\200\0034\000\000\000\000\000\000\007\204\000\000\003;\000\000\002\214\000\000\0031\001w\000\000\000\000\000\000\000\000\004\195\000\000\002\210\002\211\001\172\003v\007\205\000\000\000\000\007\207\000\000\000\000\000\000\000\000\003`\000\000\000\000\0035\007\208\003P\000\000\000\000\000\000\000\000\003b\003;\002\214\000\000\0031\001w\000\000\000\000\000\000\000\000\000\000\004\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\209\000\000\000\000\004A\003P\002\210\002\211\001\172\003b\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\003`\000\000\003t\0035\001\200\0034\000\000\000\000\000\000\000\000\000\000\003;\002\214\000\000\0031\001w\000\000\000\000\007\210\000\000\004A\004\237\002\210\002\211\001\172\000\000\003v\0032\007\211\000\000\000\000\000\000\000\000\000\000\000\000\003`\003t\0035\001\200\0034\003P\000\000\001\171\001\172\003b\003;\000\000\002\214\000\000\0031\001w\000\000\007\223\000\000\000\000\004\240\000\000\000\000\000\000\000\000\003v\000\000\001\173\003\014\000\000\001\175\001\176\007\213\000\000\000\000\000\000\000\000\000\000\004A\003P\000\000\000\000\000\000\000\000\003b\0032\007\214\000\000\000\000\000\000\000\000\007\216\000\000\003`\003t\000\000\001\200\0034\000\000\000\000\000\000\000\000\000\000\000\000\007\218\002\214\000\000\0031\001w\000\000\002\210\002\211\001\172\004A\000\000\002\210\002\211\001\172\003v\000\000\0032\000\000\007\219\000\000\000\000\0035\000\000\003`\000\000\003t\0035\001\200\0034\003;\000\000\000\000\000\000\003b\003;\002\214\000\000\0031\001w\005\016\000\000\000\000\001\180\000\000\005\021\000\000\000\000\000\000\000\000\003v\000\000\000\000\000\000\000\000\001\181\000\000\000\000\001w\003P\000\000\000\000\000\000\004A\003P\000\000\000\000\000\000\003b\000\000\0032\000\000\000\000\000\000\000\000\001\171\001\172\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\135\001\173\001\205\004A\001\175\001\176\000\000\000\000\000\000\003v\0032\000\000\000\000\003`\000\000\000\000\000\000\000\000\003`\003t\000\000\001\200\0034\000\000\000\000\002\214\000\000\0031\001w\001\198\002\214\001\210\0031\001w\000\000\001\171\001\172\000\000\001\199\000\000\001\200\001\179\000\000\003v\000\000\000\000\000\000\001\211\005\245\000\000\000\000\007\148\007l\001\171\001\172\001\173\003\014\003b\001\175\001\176\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\173\001\205\000\000\001\175\001\176\000\221\000\000\001\209\000\222\003\015\000\000\000\000\000\000\004A\000\000\000\000\002{\000\000\004A\001\181\0032\000\000\001w\000\000\000\000\0032\000\000\000\000\000\000\003t\001\210\001\200\0034\000\000\003t\000\000\001\200\0034\000\000\000\000\000\000\006\004\000\000\000\000\000\000\000\000\001\211\b\002\002\210\002\211\001\172\000\000\000\000\003v\000\000\001\214\000\000\001\215\003v\000\000\b\138\001\180\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003;\002}\001\181\000\000\005\209\001w\000\000\000\224\001\209\000\000\000\000\002\149\000\000\000\000\000\000\002\153\001\198\000\213\000\000\000\000\001\181\000\000\000\227\001w\000\000\001\231\000\000\001\200\001\179\003P\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\228\000\000\003\016\000\000\000\000\000\000\000\213\000\231\0035\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003;\001\214\000\000\001\215\000\000\002\154\004\024\004\030\000\000\0035\000\000\002\155\000\000\000\000\000\000\001\198\000\000\003;\000\000\000\000\000\000\000\000\003`\002\156\001\199\000\000\001\200\001\179\000\000\003P\002\210\002\211\001\172\001\198\002\214\000\000\0031\001w\000\000\000\000\000\232\000\000\001\231\000\000\001\200\001\179\003P\000\000\000\233\000\000\000\000\000\234\000\000\002\212\000\235\000\236\006\r\000\000\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\003`\000\000\000\000\000\240\003;\000\000\000\255\000\000\000\000\000\000\000\000\000\000\002\214\000\000\0031\001w\000\000\003`\b\018\000\000\002\210\002\211\001\172\000\000\000\000\0032\000\000\001\171\001\172\002\214\000\000\0031\001w\003P\003t\0035\001\200\0034\000\000\000\000\000\000\000\000\000\000\003;\003b\000\000\000\000\001\173\003\014\000\000\001\175\001\176\000\000\002\213\000\000\000\000\006\217\000\000\003v\000\000\000\000\003b\000\000\000\000\000\000\002\214\000\000\0031\001w\000\000\000\000\000\000\003P\005\197\003\015\000\000\000\000\000\000\000\000\000\000\0032\003`\000\000\000\000\006\218\b\133\006\219\000\000\000\000\003t\005\154\001\200\0034\002\214\000\000\0031\001w\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\000\000\003v\002\210\002\211\001\172\000\000\006\220\000\000\003`\000\000\000\000\000\000\000\000\003b\001\180\000\000\000\000\0035\003v\000\000\002\214\0032\0031\001w\000\000\003;\001\181\000\000\000\000\001w\0033\000\000\001\200\0034\000\000\000\000\000\000\000\000\000\000\000\000\006\221\000\000\0059\000\000\002\210\002\211\001\172\000\000\000\000\0032\006\222\006\223\003b\006\224\003P\000\000\000\000\000\000\003t\0035\001\200\0034\000\000\000\000\000\000\003\016\000\000\003;\000\000\000\000\000\000\000\000\002\210\002\211\001\172\000\000\007\028\000\000\000\000\000\000\000\000\004\205\003v\000\000\000\000\003\018\004\030\0035\0032\000\000\000\000\000\000\000\000\000\000\001\198\003;\003P\003t\000\000\001\200\0034\000\000\003`\001\199\006\226\001\200\001\179\000\000\000\000\006\228\006\238\002\210\002\211\001\172\002\214\000\000\0031\001w\000\000\000\000\000\000\003v\007\024\000\000\003P\000\000\0035\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003;\000\000\000\000\000\000\000\000\000\000\007\025\000\000\000\000\0035\003`\000\000\003b\000\000\000\000\000\000\000\000\003;\000\000\002\210\002\211\001\172\002\214\000\000\0031\001w\000\000\000\000\000\000\003P\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\003`\000\000\000\000\004\171\003;\000\000\000\000\000\000\003P\000\000\0032\000\000\002\214\000\000\0031\001w\003b\000\000\000\000\003t\000\000\001\200\0034\002\210\002\211\001\172\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003P\000\000\000\000\000\000\000\000\0035\003`\000\000\000\000\0035\003v\003b\004@\003;\000\000\000\000\000\000\003;\002\214\0032\0031\001w\000\000\003`\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\000\000\002\214\000\000\0031\001w\000\000\003l\000\000\003P\000\000\000\000\000\000\003P\0032\003`\000\000\003b\000\000\003v\000\000\002{\000\000\003t\000\000\001\200\0034\002\214\000\000\0031\001w\000\000\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003r\003v\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\003`\000\000\003b\000\000\003`\003t\003{\001\200\0034\000\000\000\000\000\000\002\214\0032\0031\001w\002\214\000\000\0031\001w\002}\000\000\003t\005\223\001\200\0034\000\000\000\000\000\000\003v\002\149\003\134\000\000\000\000\002\153\000\000\000\213\000\000\0032\000\000\000\000\000\000\000\000\000\000\003b\000\000\003v\003t\003b\001\200\0034\002\210\002\211\001\172\000\000\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\000\000\000\002{\000\000\0035\000\000\000\000\000\000\0035\003v\000\000\003\140\003;\000\000\000\000\003\146\003;\002\154\0032\000\000\000\000\000\000\0032\002\155\002\210\002\211\001\172\003t\000\000\001\200\0034\003t\000\000\001\200\0034\002\156\000\000\000\000\000\000\0035\000\000\003P\000\000\000\000\000\000\003P\000\000\003;\000\000\000\000\002{\003v\000\000\000\000\000\000\003v\000\000\000\000\002}\000\000\000\000\006/\000\000\000\000\000\000\000\000\000\000\000\000\002\149\000\000\000\000\000\000\002\153\000\000\000\213\000\000\003P\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003`\000\000\000\000\0035\003`\000\000\000\000\000\000\000\000\000\000\000\000\003;\002\214\000\000\0031\001w\002\214\002}\0031\001w\006;\000\000\002\210\002\211\001\172\000\000\000\000\002\149\002\154\000\000\000\000\002\153\000\000\000\213\002\155\003`\000\000\0035\000\000\000\000\003P\000\000\000\000\000\000\003b\003;\002\156\002\214\003b\0031\001w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\152\003P\0035\002\154\003\158\000\000\003b\0032\000\000\002\155\003;\0032\000\000\000\000\000\000\003`\003t\000\000\001\200\0034\003t\002\156\001\200\0034\000\000\000\000\000\000\002\214\000\000\0031\001w\000\000\000\000\000\000\000\000\003\164\000\000\000\000\000\000\003P\003v\000\000\0032\000\000\003v\000\000\000\000\000\000\000\000\003`\000\000\003t\000\000\001\200\0034\000\000\000\000\000\000\000\000\003b\000\000\002\214\000\000\0031\001w\000\000\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\000\000\003v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\003`\003\170\000\000\000\000\003;\000\000\003b\000\000\0032\002\210\002\211\001\172\002\214\002{\0031\001w\000\000\003t\002{\001\200\0034\000\000\000\000\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003;\003P\000\000\003\176\000\000\000\000\000\000\000\000\000\000\003v\0032\000\000\003b\000\000\000\000\000\000\002\210\002\211\001\172\003t\000\000\001\200\0034\000\000\000\000\000\000\000\000\000\000\000\000\003P\000\000\0035\000\000\000\000\000\000\000\000\000\000\002}\000\000\003;\006A\003\182\002}\003v\000\000\006K\000\000\002\149\0032\003`\000\000\002\153\002\149\000\213\000\000\000\000\002\153\003t\000\213\001\200\0034\002\214\000\000\0031\001w\002\210\002\211\001\172\003P\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003`\000\000\000\000\0035\003v\000\000\000\000\000\000\000\000\0035\000\000\003;\002\214\000\000\0031\001w\003b\003;\000\000\002\154\000\000\000\000\000\000\000\000\002\154\002\155\000\000\000\000\000\000\000\000\002\155\000\000\000\000\000\000\000\000\000\000\000\000\002\156\000\000\003`\003P\000\000\002\156\000\000\003b\003\188\003P\000\000\000\000\000\000\000\000\002\214\0032\0031\001w\000\000\000\000\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\194\000\000\002\210\002\211\001\172\000\000\000\000\0032\000\000\000\000\003b\000\000\003v\000\000\000\000\003`\003t\0035\001\200\0034\000\000\003`\000\000\000\000\000\000\003;\000\000\002\214\000\000\0031\001w\000\000\000\000\002\214\000\000\0031\001w\000\000\000\000\003\200\003v\002\210\002\211\001\172\000\000\000\000\0032\000\000\000\000\000\000\000\000\002\210\002\211\001\172\003P\003t\0035\001\200\0034\003b\000\000\000\000\001\171\001\172\003;\003b\0035\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003;\000\000\000\000\000\000\000\000\003v\000\000\000\000\001\173\003\014\000\000\001\175\001\176\000\000\003\206\000\000\000\000\000\000\000\000\003P\003\212\0032\000\000\000\000\000\000\000\000\000\000\0032\003`\003P\003t\000\000\001\200\0034\000\000\000\000\003t\000\000\001\200\0034\002\214\000\000\0031\001w\000\000\000\000\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003v\000\000\000\000\000\000\000\000\000\000\003v\000\000\000\000\0035\000\000\000\000\000\000\003`\000\000\000\000\000\000\003;\003b\002\210\002\211\001\172\000\000\003`\000\000\002\214\000\000\0031\001w\002\210\002\211\001\172\000\000\001\180\0035\002\214\000\000\0031\001w\000\000\000\000\000\000\003;\000\000\0035\001\181\003P\003\218\001w\000\000\000\000\000\000\003;\000\000\0032\000\000\000\000\003b\000\000\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\003b\000\000\000\000\000\000\003P\000\000\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003P\000\000\002{\007\135\000\000\003\224\003v\000\000\000\000\0035\000\000\000\000\0032\003`\000\000\003\230\000\000\003;\000\000\000\000\000\000\003t\0032\001\200\0034\002\214\000\000\0031\001w\000\000\000\000\003t\001\198\001\200\0034\000\000\000\000\000\000\003`\000\000\000\000\001\199\000\000\001\200\001\179\003v\003P\000\000\003`\000\000\002\214\000\000\0031\001w\007\147\003v\000\000\003b\002}\000\000\002\214\006T\0031\001w\002\210\002\211\001\172\000\000\002\149\000\000\000\000\000\000\002\153\000\000\000\213\000\000\000\000\000\000\000\000\0035\000\000\000\000\003b\000\000\000\000\000\000\003\236\003;\000\000\000\000\000\000\000\000\003b\0032\003`\000\000\000\000\000\000\000\000\000\000\000\221\000\000\003t\000\222\001\200\0034\002\214\000\000\0031\001w\000\000\003\250\000\000\000\000\000\000\000\000\003P\002\154\0032\000\000\000\000\004\000\000\000\002\155\000\000\000\000\003v\003t\0032\001\200\0034\000\000\000\000\000\000\000\000\002\156\005i\003t\003b\001\200\0034\000\000\000\000\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003v\000\000\000\000\bI\000\000\000\000\000\000\000\000\000\000\0035\003v\000\000\000\000\003`\000\000\000\000\004L\003;\000\000\000\000\000\000\000\000\000\224\0032\000\000\002\214\000\000\0031\001w\002\210\002\211\001\172\003t\000\000\001\200\0034\000\000\000\227\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\003P\000\000\000\000\002\210\002\211\001\172\003;\000\000\000\228\000\000\003v\003b\000\000\000\000\000\213\000\231\000\000\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003;\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003P\000\000\000\000\000\000\000\000\004V\000\000\000\000\000\000\0035\000\000\000\000\0032\003`\000\000\000\000\000\000\003;\000\000\000\000\003P\003t\000\000\001\200\0034\002\214\000\000\0031\001w\000\232\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\003v\003P\0035\003`\000\000\000\000\000\000\000\000\000\000\000\000\003;\000\000\003b\000\000\000\000\002\214\000\221\0031\001w\000\222\000\000\000\000\000\000\003`\000\240\000\000\000\000\005p\000\000\000\000\002\210\002\211\001\172\000\000\000\000\002\214\000\000\0031\001w\003P\000\000\004`\000\000\000\000\000\000\0035\000\000\003b\0032\003`\000\000\000\000\006\004\003;\000\000\000\000\000\000\003t\000\000\001\200\0034\002\214\000\000\0031\001w\000\000\000\000\003b\000\000\000\000\000\000\006\007\000\000\000\000\000\000\000\000\004k\000\000\000\000\000\000\000\000\003v\003P\0032\000\000\000\000\000\000\003`\000\000\000\224\000\000\000\000\003t\003b\001\200\0034\004u\000\000\000\000\002\214\000\000\0031\001w\0032\000\227\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\003v\000\000\000\000\000\000\000\000\000\228\004\127\000\000\000\000\000\000\000\000\000\213\000\231\0032\003`\003b\002\210\002\211\001\172\000\000\003v\000\000\003t\000\000\001\200\0034\002\214\000\000\0031\001w\000\000\0035\000\000\002\210\002\211\001\172\000\000\000\000\000\000\003;\000\000\000\000\000\000\000\000\004\139\000\000\003v\000\000\0035\000\000\000\000\0032\000\000\000\000\000\000\000\000\003;\000\000\003b\000\000\003t\000\232\001\200\0034\000\000\000\000\000\000\000\000\003P\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\006\r\000\000\000\000\000\000\000\000\000\000\000\000\003v\003P\000\000\004\149\000\000\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\002\210\002\211\001\172\000\000\000\240\000\000\003t\000\255\001\200\0034\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\003`\000\000\000\000\000\000\003;\000\000\000\000\002\210\002\211\001\172\000\000\003v\002\214\000\000\0031\001w\000\000\003`\000\000\000\000\000\000\000\000\0035\000\000\002\210\002\211\001\172\000\000\000\000\002\214\003;\0031\001w\003P\002\210\002\211\001\172\000\000\000\000\0035\000\000\000\000\000\000\000\000\003b\000\000\000\000\003;\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003;\000\000\003P\000\000\003b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\159\000\221\000\000\003P\000\222\000\000\000\000\0032\003`\000\000\000\000\000\000\000\000\003P\000\000\000\000\003t\004\166\001\200\0034\002\214\000\000\0031\001w\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003t\003`\001\200\0034\006\004\000\000\000\000\003v\000\000\000\000\000\000\000\000\000\000\002\214\000\000\0031\001w\000\000\003`\003b\000\000\000\000\000\000\006\128\003v\000\000\000\000\000\000\003`\000\000\002\214\000\000\0031\001w\000\000\000\000\000\000\000\000\000\000\000\000\002\214\000\224\0031\001w\000\000\003b\000\000\000\000\004\227\000\000\000\221\000\000\000\000\000\222\000\000\0032\000\227\000\000\000\000\000\000\000\000\000\000\003b\000\000\003t\000\000\001\200\0034\000\000\000\000\000\000\000\000\003b\000\228\004\226\000\000\000\000\000\000\000\000\000\213\000\231\0032\000\000\000\000\000\000\000\000\006\004\000\000\003v\000\000\003t\004\233\001\200\0034\000\221\000\000\000\000\000\222\0032\000\000\000\000\004\255\000\000\000\221\000\000\007Q\000\222\003t\0032\001\200\0034\000\000\000\000\000\000\003v\000\000\000\000\003t\000\000\001\200\0034\000\000\000\000\000\224\000\000\000\221\000\000\000\000\000\222\000\232\006\004\003v\000\000\002\210\002\211\001\172\000\000\000\233\000\227\006\004\000\234\003v\000\000\000\235\000\236\006\r\000\000\000\000\0035\007_\000\000\000\000\000\000\000\000\000\000\000\228\003;\000\000\007i\000\000\000\000\000\213\000\231\000\000\000\000\000\000\000\000\000\224\000\000\000\240\000\000\000\000\000\255\000\000\000\000\000\000\000\224\000\000\000\000\000\000\000\221\000\000\000\227\000\222\000\000\003P\000\000\000\000\000\000\000\000\000\000\000\227\000\000\000\000\000\000\000\000\000\000\000\000\000\224\000\228\000\000\000\000\000\000\000\000\000\000\000\213\000\231\000\000\000\228\000\000\000\000\000\232\000\000\000\227\000\213\000\231\005i\000\000\000\000\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\006\r\000\000\000\000\000\228\000\000\000\000\003`\005l\000\000\000\213\000\231\000\000\000\221\000\000\000\000\000\222\000\000\000\000\002\214\000\000\0031\001w\000\000\000\000\000\240\000\000\000\224\000\255\000\232\000\000\000\221\000\000\000\000\000\222\000\000\000\000\000\233\000\232\000\000\000\234\000\000\000\227\000\235\000\236\006\r\000\233\000\000\000\000\000\234\000\000\003b\000\235\000\236\006\r\006\217\000\000\000\000\000\000\000\228\000\232\000\000\007\130\000\000\000\000\000\213\000\231\000\000\000\233\000\240\000\000\000\234\000\255\000\000\000\235\000\236\006\157\000\000\000\240\006\160\b!\000\255\000\000\006\218\b\152\006\219\000\224\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003t\000\000\001\200\0034\000\240\000\227\000\000\000\255\000\224\000\000\000\000\000\221\000\000\000\000\000\222\000\000\000\000\000\000\000\000\000\232\000\000\006\220\000\228\000\227\003v\000\000\000\000\000\233\000\213\000\231\000\234\000\000\000\000\000\235\000\236\000\000\000\000\000\000\000\000\000\000\000\228\000\221\000\000\007\204\000\222\000\000\000\213\000\231\000\000\000\000\000\000\000\000\000\000\000\221\000\000\006\221\000\222\000\000\b\237\000\240\000\000\b\238\005p\000\000\007\207\006\222\006\223\000\000\006\224\000\000\000\000\000\000\000\000\007\208\000\000\000\000\000\000\000\000\000\232\000\000\b\178\000\000\000\000\000\000\000\224\000\000\000\233\000\221\000\000\000\234\000\222\007\028\000\235\000\236\006\157\000\000\000\232\007\176\000\000\000\227\000\000\000\000\000\000\000\000\000\233\007\209\000\000\000\234\000\000\000\000\000\235\000\236\006\144\000\000\000\224\000\000\000\228\000\000\000\240\006\226\b\154\000\255\000\213\000\231\006\228\006\238\000\224\000\000\000\000\000\227\000\000\000\000\000\221\000\000\000\000\000\222\000\240\007\024\000\000\000\255\007\210\000\227\000\000\000\000\000\000\000\000\000\228\000\000\000\000\000\000\007\211\000\000\000\213\000\231\000\000\007\025\000\000\000\000\000\228\000\000\000\224\000\000\000\000\000\000\000\213\000\231\001\016\000\000\000\000\000\000\b\240\000\000\000\232\000\221\000\000\000\227\000\222\000\000\000\000\000\000\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\b\179\007\213\000\000\000\000\000\228\000\000\000\221\000\000\000\000\000\222\000\213\000\231\000\000\000\000\000\232\007\214\000\221\000\224\000\000\000\222\007\216\000\000\000\233\000\000\000\240\000\234\000\232\000\255\000\235\000\236\001(\000\000\000\227\007\218\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\000\237\000\000\000\000\000\000\000\000\000\000\000\000\000\228\000\000\007\219\000\000\000\000\000\240\000\213\000\231\000\255\000\224\000\000\000\232\000\221\000\000\000\000\000\222\000\000\000\240\000\000\000\233\000\255\000\000\000\234\000\000\000\227\000\235\000\236\001-\000\000\000\000\000\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\224\000\228\000\000\000\221\000\000\000\227\000\222\000\213\000\231\000\000\000\000\000\240\000\000\000\000\000\255\000\227\000\232\000\000\000\000\000\000\000\000\000\000\000\228\000\000\000\233\000\000\000\000\000\234\000\213\000\231\000\235\000\236\000\228\000\000\000\221\000\000\000\000\000\222\000\213\000\231\000\000\000\000\000\000\000\000\000\000\000\224\000\000\000\221\000\000\000\000\000\222\000\000\000\000\000\000\000\000\000\000\000\240\000\232\000\000\001\022\000\227\000\000\000\000\000\000\000\000\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\001B\000\000\000\000\000\224\000\228\000\232\000\000\000\000\000\000\000\000\000\213\000\231\000\000\000\233\000\000\000\232\000\234\000\000\000\227\000\235\000\236\001I\000\000\000\233\000\240\000\000\000\234\000\255\000\000\000\235\000\236\001\139\000\000\000\000\000\224\000\228\000\221\000\000\000\000\000\222\000\000\000\213\000\231\000\000\000\000\000\240\000\000\000\224\000\255\000\227\000\000\000\000\000\000\000\000\000\000\000\240\000\221\000\000\000\255\000\222\000\232\000\000\000\227\000\000\000\000\000\000\000\228\000\000\000\233\000\000\000\000\000\234\000\213\000\231\000\235\000\236\001\146\000\000\000\000\000\228\000\000\000\000\000\000\000\000\000\000\000\213\000\231\000\000\000\000\000\000\000\000\000\232\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\233\000\240\000\222\000\234\000\255\000\000\000\235\000\236\001\159\000\000\000\224\000\221\000\000\000\000\000\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\232\000\000\000\227\000\000\000\000\000\000\000\000\000\224\000\233\000\240\000\000\000\234\000\255\000\232\000\235\000\236\001\193\000\000\000\000\000\228\000\000\000\233\000\227\000\000\000\234\000\213\000\231\000\235\000\236\001\221\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\222\000\228\000\240\000\000\000\000\000\255\000\000\000\213\000\231\000\000\000\000\000\224\000\000\000\000\000\000\000\240\000\000\000\000\000\255\000\000\000\000\000\000\000\000\000\224\000\000\000\000\000\227\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\222\000\232\000\227\000\000\000\000\000\000\000\000\000\228\000\000\000\233\000\000\000\000\000\234\000\213\000\231\000\235\000\236\001\251\000\000\000\228\000\000\000\232\000\000\000\000\000\000\000\213\000\231\000\000\000\000\000\233\000\000\000\000\000\234\000\000\000\224\000\235\000\236\002\004\000\000\000\221\000\000\000\240\000\222\000\000\000\255\000\000\000\000\000\000\000\000\000\227\000\000\000\000\000\221\000\000\000\000\000\222\000\000\000\000\000\000\000\000\000\000\000\240\000\000\000\232\000\255\000\000\000\228\000\000\000\000\000\000\000\224\000\233\000\213\000\231\000\234\000\232\000\000\000\235\000\236\002;\000\000\000\000\000\000\000\233\000\000\000\227\000\234\000\000\000\000\000\235\000\236\002H\000\000\000\000\000\221\000\000\000\000\000\222\000\000\000\000\000\000\000\000\000\228\000\240\000\000\000\000\000\255\000\221\000\213\000\231\000\222\000\000\000\224\000\000\000\000\000\240\000\000\000\000\000\255\000\000\000\000\000\000\000\232\000\000\000\000\000\224\000\000\000\227\000\000\000\000\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\002V\000\000\000\227\000\000\000\000\000\000\000\228\000\000\000\000\000\000\000\000\000\221\000\213\000\231\000\222\000\000\000\000\000\000\000\000\000\228\000\232\000\000\000\000\000\000\000\240\000\213\000\231\000\255\000\233\000\224\000\000\000\234\000\000\000\000\000\235\000\236\002b\000\000\000\000\000\000\000\000\000\000\000\224\000\000\000\227\000\000\000\000\000\221\000\000\000\000\000\222\000\000\000\000\000\000\000\000\000\000\000\000\000\227\000\000\000\000\000\240\000\228\000\232\000\255\000\000\000\000\000\221\000\213\000\231\000\222\000\233\000\000\000\000\000\234\000\228\000\232\000\235\000\236\002\139\000\000\000\213\000\231\000\000\000\233\000\224\000\000\000\234\000\000\000\000\000\235\000\236\002\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\227\000\000\000\000\000\240\000\000\000\000\000\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\240\000\228\000\232\000\255\000\000\000\224\000\221\000\213\000\231\000\222\000\233\000\000\000\000\000\234\000\000\000\232\000\235\000\236\002\233\000\000\000\227\000\000\000\000\000\233\000\224\000\000\000\234\000\000\000\000\000\235\000\236\003\002\000\000\000\000\000\000\000\000\000\000\000\228\000\000\000\227\000\000\000\000\000\240\000\213\000\231\000\255\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\222\000\240\000\228\000\232\000\255\000\000\000\000\000\221\000\213\000\231\000\222\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\004\n\000\000\000\000\000\000\000\000\000\000\000\224\000\000\000\221\000\000\000\000\000\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\232\000\227\000\000\000\000\000\240\000\000\000\000\000\255\000\233\000\000\000\221\000\234\000\000\000\222\000\235\000\236\004\017\000\000\000\228\000\232\000\000\000\000\000\000\000\000\000\213\000\231\000\000\000\233\000\000\000\000\000\234\000\224\000\000\000\235\000\236\004!\000\000\000\000\000\000\000\000\000\240\000\224\000\000\000\255\000\000\000\000\000\227\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\227\000\000\000\000\000\240\000\000\000\224\000\255\000\228\000\000\000\221\000\000\000\000\000\222\000\213\000\231\000\000\000\000\000\228\000\232\000\000\000\227\000\000\000\000\000\213\000\231\000\000\000\233\000\224\000\000\000\234\000\000\000\000\000\235\000\236\004-\000\000\000\000\000\228\000\000\000\000\000\000\000\000\000\227\000\213\000\231\000\000\000\000\000\000\000\000\000\221\000\000\000\221\006\194\000\000\000\222\000\000\000\000\000\000\000\240\000\228\000\000\000\255\000\000\000\232\000\000\000\213\000\231\000\000\000\000\000\000\000\000\000\233\000\000\000\232\000\234\000\000\000\000\000\235\000\236\006\006\000\000\000\233\000\224\000\000\000\234\000\000\000\000\000\235\000\236\006i\000\000\000\000\000\221\000\232\000\000\000\222\000\000\000\227\000\000\000\000\000\000\000\233\000\000\000\240\000\234\000\000\000\255\000\235\000\236\006u\000\000\000\000\000\000\000\240\000\228\000\232\000\255\000\000\000\000\000\000\000\213\000\231\006\196\000\233\000\224\000\000\000\234\000\000\000\000\000\235\000\236\006\143\000\000\000\240\000\000\000\000\000\255\000\227\000\000\000\227\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\228\000\240\000\228\000\000\000\255\000\000\000\213\006\199\000\213\000\231\000\000\000\224\000\221\000\000\000\000\000\222\000\232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\233\000\000\000\227\000\234\000\000\000\000\000\235\000\236\006\159\000\221\000\000\000\000\006\194\000\000\000\000\000\000\000\000\000\000\000\000\000\228\000\000\000\000\000\000\000\000\000\000\000\213\000\231\000\000\000\221\000\000\000\000\006\194\000\240\000\000\000\232\000\255\000\000\000\000\000\000\000\000\000\233\000\000\000\233\006\200\000\000\000\234\000\235\000\236\000\235\000\236\007<\000\000\000\000\000\000\000\000\000\000\006\146\000\000\006\213\000\000\006\202\000\224\000\000\000\221\000\000\000\000\000\222\000\000\000\000\000\000\000\000\000\000\000\240\000\000\000\240\000\232\000\227\000\255\000\000\000\000\000\000\000\000\006\196\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\007N\000\000\000\228\000\000\000\000\000\000\000\227\000\000\000\213\000\231\006\196\000\000\000\000\000\000\000\000\000\000\001\171\001\172\000\000\000\000\000\000\000\000\000\000\000\228\000\240\000\227\000\000\000\255\000\000\000\213\006\199\000\000\001\171\001\172\000\000\000\000\001\173\003\014\000\000\001\175\001\176\000\000\000\228\000\000\000\000\000\224\000\000\000\000\000\213\006\199\000\000\000\000\001\173\003\014\000\000\001\175\001\176\000\000\000\232\000\000\000\227\000\000\000\000\000\000\000\000\000\000\000\233\000\221\000\000\000\234\000\222\000\000\000\235\000\236\007f\000\000\000\000\000\228\000\000\000\221\000\000\000\000\000\222\000\213\000\231\000\000\000\000\000\233\000\000\000\221\006\200\000\000\000\222\000\235\000\236\000\000\000\000\000\000\000\240\000\000\000\000\000\255\000\000\006\146\000\000\007\162\000\233\006\202\000\000\006\200\000\000\000\000\000\235\000\236\000\000\001\180\000\000\000\000\000\000\000\240\000\221\000\000\006\146\000\222\007\188\000\000\006\202\001\181\000\000\000\000\001w\001\180\000\000\000\232\000\000\000\000\000\000\000\000\000\240\000\000\000\224\000\233\000\000\001\181\000\234\000\000\001w\000\235\000\236\007\252\000\000\000\000\000\224\000\000\000\000\000\227\000\000\000\000\000\000\000\000\000\000\000\000\000\224\000\000\000\000\000\221\007\191\000\227\000\222\000\000\000\000\000\000\000\228\000\240\000\000\000\000\000\255\000\227\000\213\000\231\000\000\000\000\007\191\000\000\000\228\000\000\000\221\000\000\000\000\000\222\000\213\000\231\000\000\000\224\000\228\001\198\000\221\000\000\000\000\000\222\000\213\000\231\000\000\000\000\001\199\000\000\001\200\001\179\000\227\000\000\000\000\001\198\000\000\000\000\000\000\000\000\000\000\000\000\007\192\000\000\001\199\000\000\001\200\001\179\000\000\000\228\000\000\000\000\000\232\000\000\000\000\000\213\000\231\000\000\007\200\000\000\000\233\000\000\000\224\000\234\000\232\000\000\000\235\000\236\b\006\000\000\000\000\000\000\000\233\000\000\000\232\000\234\000\000\000\227\000\235\000\236\bc\007\204\000\233\000\224\000\000\000\234\000\000\000\000\000\235\000\236\bf\000\000\000\240\000\224\000\228\000\255\b\237\000\000\000\227\b\238\000\213\000\231\007\207\000\000\000\240\000\232\006\217\000\255\000\227\000\000\006\217\007\208\000\000\000\233\000\240\000\228\000\234\000\255\000\000\000\235\000\236\000\213\000\231\000\000\000\000\000\228\000\000\000\000\000\000\000\000\000\000\000\213\000\231\000\000\006\218\000\000\006\219\000\000\006\218\000\000\006\219\000\000\000\000\007\209\000\000\000\240\000\000\000\000\001\018\000\000\000\232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\000\000\000\000\006\220\000\000\000\000\000\232\006\220\000\000\000\221\000\000\000\000\000\222\007\210\000\233\000\000\000\232\000\234\000\000\000\000\000\235\000\236\000\000\007\211\000\233\000\240\000\000\000\234\002\134\000\000\000\235\000\236\000\000\000\000\000\000\000\000\000\000\006\221\000\000\000\000\000\000\006\221\007\204\b\239\000\000\000\000\000\240\006\222\006\223\002\136\006\224\006\222\006\223\007\204\006\224\000\000\000\240\b\237\000\000\005k\b\238\000\000\007\213\007\207\000\000\001\171\001\172\000\000\b\237\000\000\000\000\b\238\007\208\007\026\007\207\000\000\007\214\006\225\000\000\000\000\000\000\007\216\000\224\007\208\000\000\001\173\001\174\000\000\001\175\001\176\000\000\000\000\000\000\000\000\007\218\000\000\000\000\000\227\000\000\000\000\000\000\006\226\000\000\000\000\007\209\006\226\006\228\006\238\000\000\000\000\006\228\006\238\007\219\000\000\000\228\007\209\000\000\000\000\000\000\007\024\000\213\000\231\000\000\007\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\171\001\172\000\000\000\000\000\000\000\000\007\025\000\000\007\210\000\000\007\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\211\007\210\001\173\001\187\000\000\001\175\001\176\000\000\000\000\000\000\000\000\007\211\000\000\000\000\000\000\001\180\000\000\001\171\001\172\000\000\b\243\001\004\001\171\001\172\000\000\000\000\000\000\001\181\000\000\000\233\001w\b\248\000\234\000\000\000\000\000\235\000\236\001\173\001\197\007\213\001\175\001\176\001\173\001\208\000\000\001\175\001\176\000\000\000\000\000\000\007\213\000\000\000\000\007\214\001\171\001\172\000\000\000\000\007\216\000\000\000\000\000\240\000\000\000\000\007\214\000\000\000\000\001\171\001\172\007\216\000\000\007\218\000\000\000\000\001\173\001\225\000\000\001\175\001\176\000\000\000\000\001\180\007\218\000\000\000\000\000\000\000\000\001\173\001\238\007\219\001\175\001\176\000\000\001\181\000\000\001\198\001w\000\000\000\000\000\000\007\219\000\000\000\000\000\000\001\199\000\000\001\200\001\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\180\001\171\001\172\000\000\000\000\001\180\000\000\001\171\001\172\000\000\000\000\000\000\001\181\000\000\000\000\001w\000\000\001\181\000\000\000\000\001w\001\173\001\255\000\000\001\175\001\176\000\000\001\173\002+\000\000\001\175\001\176\000\000\000\000\000\000\000\000\000\000\001\180\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\198\001\171\001\172\000\000\001\181\001\180\000\000\001w\000\000\001\199\000\000\001\200\001\179\000\000\000\000\000\000\000\000\001\181\001\171\001\172\001w\001\173\002?\000\000\001\175\001\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\198\000\000\000\000\001\173\002L\001\198\001\175\001\176\000\000\001\199\000\000\001\200\001\179\000\000\001\199\000\000\001\200\001\179\000\000\000\000\001\180\000\000\000\000\000\000\000\000\000\000\001\180\000\000\000\000\000\000\000\000\000\000\001\181\001\171\001\172\001w\000\000\001\198\001\181\000\000\000\000\001w\000\000\000\000\000\000\000\000\001\199\000\000\001\200\001\179\001\198\000\000\000\000\001\173\002P\000\000\001\175\001\176\000\000\001\199\000\000\001\200\001\179\000\000\000\000\001\180\001\171\001\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\181\000\000\000\000\001w\000\000\001\180\000\000\001\171\001\172\001\173\002Z\000\000\001\175\001\176\000\000\000\000\000\000\001\181\000\000\000\000\001w\000\000\000\000\001\198\000\000\001\171\001\172\001\173\003\r\001\198\001\175\001\176\001\199\000\000\001\200\001\179\007\204\000\000\001\199\000\000\001\200\001\179\000\000\000\000\000\000\001\173\0041\000\000\001\175\001\176\000\000\001\171\001\172\000\000\007\205\001\180\000\000\007\207\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\007\208\001\181\001\198\000\000\001w\001\173\007\243\000\000\001\175\001\176\000\000\001\199\000\000\001\200\001\179\000\000\000\000\002\236\000\000\001\198\000\000\000\000\001\180\001\171\001\172\000\000\000\000\000\000\001\199\000\000\001\200\001\179\007\209\000\000\001\181\000\000\000\000\001w\000\000\000\000\001\180\000\000\000\000\001\173\b\000\000\000\001\175\001\176\000\221\000\000\000\000\000\222\001\181\000\000\000\000\001w\000\000\000\000\001\180\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\210\000\000\001\198\001\181\000\000\000\000\001w\000\000\000\000\000\000\007\211\001\199\000\221\001\200\001\179\000\222\000\000\001\180\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\213\000\000\001\181\000\000\000\000\001w\000\000\007\233\001\198\000\000\000\000\000\000\002\214\000\000\0031\001w\000\000\001\199\000\000\001\200\001\179\000\000\007\213\000\000\000\000\000\000\001\198\000\224\001\180\000\000\000\000\000\000\000\000\000\000\000\000\001\199\007\214\001\200\001\179\000\000\001\181\007\216\000\227\001w\001\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\199\007\218\001\200\001\179\000\000\000\224\000\228\000\000\000\000\002\210\002\211\001\172\000\213\000\231\000\000\000\000\000\000\001\198\000\000\007\219\000\227\000\000\002\210\002\211\001\172\000\000\001\199\0032\001\200\001\179\000\000\000\000\002\238\000\000\000\000\000\000\0033\000\228\001\200\0034\002\210\002\211\001\172\000\213\000\231\003#\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\000\000\000\001\198\002\210\002\211\001\172\000\000\000\000\000\000\bW\0030\001\199\000\000\001\200\001\179\000\000\003E\000\233\000\000\000\000\000\234\000\000\000\000\000\235\000\236\000\000\003G\002\210\002\211\001\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\233\000\240\003Y\000\234\000\000\000\000\000\235\000\236\002\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\214\002\213\0031\001w\000\000\000\000\002\210\002\211\001\172\000\000\000\000\000\000\000\240\002\214\000\000\0031\001w\000\000\000\000\002\213\000\000\000\000\002\210\002\211\001\172\002\213\000\000\000\000\000\000\003a\000\000\002\214\000\000\0031\001w\002\213\000\000\002\214\000\000\0031\001w\002\210\002\211\001\172\000\000\003u\000\000\002\214\000\000\0031\001w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\213\002\210\002\211\001\172\000\000\003\245\002\210\002\211\001\172\0032\000\000\000\000\002\214\000\000\0031\001w\000\000\000\000\0033\000\000\001\200\0034\0032\000\000\004\250\000\000\000\000\000\000\000\000\b\r\000\000\0033\000\000\001\200\0034\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\0032\002\213\000\000\0033\000\000\001\200\0034\000\000\000\000\0033\0032\001\200\0034\002\214\000\000\0031\001w\002\213\000\000\0033\000\000\001\200\0034\000\000\002\210\002\211\001\172\000\000\000\000\002\214\000\000\0031\001w\000\000\0032\000\000\002\213\000\000\000\000\000\000\000\000\000\000\000\000\0033\000\000\001\200\0034\b\028\002\214\000\000\0031\001w\000\000\000\000\000\000\002\213\000\000\000\000\000\000\000\000\002\213\000\000\000\000\000\000\000\000\000\000\000\000\002\214\000\000\0031\001w\000\000\002\214\000\000\0031\001w\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0033\000\000\001\200\0034\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0033\000\000\001\200\0034\000\000\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\213\0033\000\000\001\200\0034\000\000\000\000\000\000\000\000\000\000\000\000\0032\002\214\000\000\0031\001w\0032\000\000\000\000\000\000\0033\000\000\001\200\0034\000\000\0033\000\000\001\200\0034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0033\000\000\001\200\0034")) and semantic_action = [| @@ -1486,9 +1474,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4024 "parsing/parser.mly" +# 4195 "parsing/parser.mly" ( "+" ) -# 1492 "parsing/parser.ml" +# 1480 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1511,9 +1499,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4025 "parsing/parser.mly" +# 4196 "parsing/parser.mly" ( "+." ) -# 1517 "parsing/parser.ml" +# 1505 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1536,9 +1524,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3514 "parsing/parser.mly" +# 3638 "parsing/parser.mly" ( _1 ) -# 1542 "parsing/parser.ml" +# 1530 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1590,15 +1578,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3462 "parsing/parser.mly" +# 3586 "parsing/parser.mly" ( mkrhs _2 _sloc ) -# 1596 "parsing/parser.ml" +# 1584 "parsing/parser.ml" in -# 3517 "parsing/parser.mly" +# 3641 "parsing/parser.mly" ( Ptyp_alias(ty, tyvar) ) -# 1602 "parsing/parser.ml" +# 1590 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__2_inlined1_, _startpos_ty_) in @@ -1606,15 +1594,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 1612 "parsing/parser.ml" +# 1600 "parsing/parser.ml" in ( -# 3519 "parsing/parser.mly" +# 3643 "parsing/parser.mly" ( _1 ) -# 1618 "parsing/parser.ml" +# 1606 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -1663,30 +1651,30 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 1669 "parsing/parser.ml" +# 1657 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 1678 "parsing/parser.ml" +# 1666 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2747 "parsing/parser.mly" +# 2732 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklb ~loc:_sloc false body attrs ) -# 1690 "parsing/parser.ml" +# 1678 "parsing/parser.ml" : (let_binding)) in { @@ -1710,9 +1698,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3908 "parsing/parser.mly" +# 4079 "parsing/parser.mly" ( _1 ) -# 1716 "parsing/parser.ml" +# 1704 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1735,9 +1723,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3909 "parsing/parser.mly" +# 4080 "parsing/parser.mly" ( Lident _1 ) -# 1741 "parsing/parser.ml" +# 1729 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1760,9 +1748,9 @@ module Tables = struct let _startpos = _startpos_type__ in let _endpos = _endpos_type__ in let _v : (Parsetree.core_type) = -# 3650 "parsing/parser.mly" +# 3819 "parsing/parser.mly" ( type_ ) -# 1766 "parsing/parser.ml" +# 1754 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1792,35 +1780,35 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 1798 "parsing/parser.ml" +# 1786 "parsing/parser.ml" in let tys = -# 3683 "parsing/parser.mly" +# 3852 "parsing/parser.mly" ( [] ) -# 1804 "parsing/parser.ml" +# 1792 "parsing/parser.ml" in -# 3654 "parsing/parser.mly" +# 3823 "parsing/parser.mly" ( Ptyp_constr (tid, tys) ) -# 1809 "parsing/parser.ml" +# 1797 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 1818 "parsing/parser.ml" +# 1806 "parsing/parser.ml" in ( -# 3668 "parsing/parser.mly" +# 3837 "parsing/parser.mly" ( _1 ) -# 1824 "parsing/parser.ml" +# 1812 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -1858,20 +1846,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 1864 "parsing/parser.ml" +# 1852 "parsing/parser.ml" in let tys = -# 3685 "parsing/parser.mly" +# 3854 "parsing/parser.mly" ( [ ty ] ) -# 1870 "parsing/parser.ml" +# 1858 "parsing/parser.ml" in -# 3654 "parsing/parser.mly" +# 3823 "parsing/parser.mly" ( Ptyp_constr (tid, tys) ) -# 1875 "parsing/parser.ml" +# 1863 "parsing/parser.ml" in let _startpos__1_ = _startpos_ty_ in @@ -1879,15 +1867,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 1885 "parsing/parser.ml" +# 1873 "parsing/parser.ml" in ( -# 3668 "parsing/parser.mly" +# 3837 "parsing/parser.mly" ( _1 ) -# 1891 "parsing/parser.ml" +# 1879 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -1940,9 +1928,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 1946 "parsing/parser.ml" +# 1934 "parsing/parser.ml" in let tys = @@ -1950,24 +1938,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 1954 "parsing/parser.ml" +# 1942 "parsing/parser.ml" in -# 1167 "parsing/parser.mly" +# 1155 "parsing/parser.mly" ( xs ) -# 1959 "parsing/parser.ml" +# 1947 "parsing/parser.ml" in -# 3687 "parsing/parser.mly" +# 3856 "parsing/parser.mly" ( tys ) -# 1965 "parsing/parser.ml" +# 1953 "parsing/parser.ml" in -# 3654 "parsing/parser.mly" +# 3823 "parsing/parser.mly" ( Ptyp_constr (tid, tys) ) -# 1971 "parsing/parser.ml" +# 1959 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -1975,15 +1963,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 1981 "parsing/parser.ml" +# 1969 "parsing/parser.ml" in ( -# 3668 "parsing/parser.mly" +# 3837 "parsing/parser.mly" ( _1 ) -# 1987 "parsing/parser.ml" +# 1975 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -2021,20 +2009,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2027 "parsing/parser.ml" +# 2015 "parsing/parser.ml" in let tys = -# 3683 "parsing/parser.mly" +# 3852 "parsing/parser.mly" ( [] ) -# 2033 "parsing/parser.ml" +# 2021 "parsing/parser.ml" in -# 3658 "parsing/parser.mly" +# 3827 "parsing/parser.mly" ( Ptyp_class (cid, tys) ) -# 2038 "parsing/parser.ml" +# 2026 "parsing/parser.ml" in let _startpos__1_ = _startpos__2_ in @@ -2042,15 +2030,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2048 "parsing/parser.ml" +# 2036 "parsing/parser.ml" in ( -# 3668 "parsing/parser.mly" +# 3837 "parsing/parser.mly" ( _1 ) -# 2054 "parsing/parser.ml" +# 2042 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -2095,20 +2083,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2101 "parsing/parser.ml" +# 2089 "parsing/parser.ml" in let tys = -# 3685 "parsing/parser.mly" +# 3854 "parsing/parser.mly" ( [ ty ] ) -# 2107 "parsing/parser.ml" +# 2095 "parsing/parser.ml" in -# 3658 "parsing/parser.mly" +# 3827 "parsing/parser.mly" ( Ptyp_class (cid, tys) ) -# 2112 "parsing/parser.ml" +# 2100 "parsing/parser.ml" in let _startpos__1_ = _startpos_ty_ in @@ -2116,15 +2104,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2122 "parsing/parser.ml" +# 2110 "parsing/parser.ml" in ( -# 3668 "parsing/parser.mly" +# 3837 "parsing/parser.mly" ( _1 ) -# 2128 "parsing/parser.ml" +# 2116 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -2184,9 +2172,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2190 "parsing/parser.ml" +# 2178 "parsing/parser.ml" in let tys = @@ -2194,24 +2182,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 2198 "parsing/parser.ml" +# 2186 "parsing/parser.ml" in -# 1167 "parsing/parser.mly" +# 1155 "parsing/parser.mly" ( xs ) -# 2203 "parsing/parser.ml" +# 2191 "parsing/parser.ml" in -# 3687 "parsing/parser.mly" +# 3856 "parsing/parser.mly" ( tys ) -# 2209 "parsing/parser.ml" +# 2197 "parsing/parser.ml" in -# 3658 "parsing/parser.mly" +# 3827 "parsing/parser.mly" ( Ptyp_class (cid, tys) ) -# 2215 "parsing/parser.ml" +# 2203 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -2219,15 +2207,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2225 "parsing/parser.ml" +# 2213 "parsing/parser.ml" in ( -# 3668 "parsing/parser.mly" +# 3837 "parsing/parser.mly" ( _1 ) -# 2231 "parsing/parser.ml" +# 2219 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -2272,15 +2260,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2278 "parsing/parser.ml" +# 2266 "parsing/parser.ml" in -# 3662 "parsing/parser.mly" +# 3831 "parsing/parser.mly" ( Ptyp_open (mod_ident, type_) ) -# 2284 "parsing/parser.ml" +# 2272 "parsing/parser.ml" in let _endpos__1_ = _endpos_type__ in @@ -2288,15 +2276,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2294 "parsing/parser.ml" +# 2282 "parsing/parser.ml" in ( -# 3668 "parsing/parser.mly" +# 3837 "parsing/parser.mly" ( _1 ) -# 2300 "parsing/parser.ml" +# 2288 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -2329,24 +2317,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3664 "parsing/parser.mly" +# 3833 "parsing/parser.mly" ( Ptyp_var ident ) -# 2335 "parsing/parser.ml" +# 2323 "parsing/parser.ml" in let _endpos__1_ = _endpos_ident_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2344 "parsing/parser.ml" +# 2332 "parsing/parser.ml" in ( -# 3668 "parsing/parser.mly" +# 3837 "parsing/parser.mly" ( _1 ) -# 2350 "parsing/parser.ml" +# 2338 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -2372,23 +2360,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 3666 "parsing/parser.mly" +# 3835 "parsing/parser.mly" ( Ptyp_any ) -# 2378 "parsing/parser.ml" +# 2366 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2386 "parsing/parser.ml" +# 2374 "parsing/parser.ml" in ( -# 3668 "parsing/parser.mly" +# 3837 "parsing/parser.mly" ( _1 ) -# 2392 "parsing/parser.ml" +# 2380 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -2414,23 +2402,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 4091 "parsing/parser.mly" +# 4263 "parsing/parser.mly" ( _1 ) -# 2420 "parsing/parser.ml" +# 2408 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1014 "parsing/parser.mly" +# 1002 "parsing/parser.mly" ( mkloc _1 (make_loc _sloc) ) -# 2428 "parsing/parser.ml" +# 2416 "parsing/parser.ml" in ( -# 4093 "parsing/parser.mly" +# 4265 "parsing/parser.mly" ( _1 ) -# 2434 "parsing/parser.ml" +# 2422 "parsing/parser.ml" : (Ast_helper.str)) in { @@ -2470,24 +2458,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 4092 "parsing/parser.mly" +# 4264 "parsing/parser.mly" ( _1 ^ "." ^ _3.txt ) -# 2476 "parsing/parser.ml" +# 2464 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1014 "parsing/parser.mly" +# 1002 "parsing/parser.mly" ( mkloc _1 (make_loc _sloc) ) -# 2485 "parsing/parser.ml" +# 2473 "parsing/parser.ml" in ( -# 4093 "parsing/parser.mly" +# 4265 "parsing/parser.mly" ( _1 ) -# 2491 "parsing/parser.ml" +# 2479 "parsing/parser.ml" : (Ast_helper.str)) in { @@ -2511,11 +2499,11 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.payload) = -# 4148 "parsing/parser.mly" +# 4320 "parsing/parser.mly" ( Builtin_attributes.mark_payload_attrs_used _1; _1 ) -# 2519 "parsing/parser.ml" +# 2507 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2563,9 +2551,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4097 "parsing/parser.mly" +# 4269 "parsing/parser.mly" ( mk_attr ~loc:(make_loc _sloc) _2 _3 ) -# 2569 "parsing/parser.ml" +# 2557 "parsing/parser.ml" : (Parsetree.attribute)) in { @@ -2589,9 +2577,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.class_expr) = -# 1997 "parsing/parser.mly" +# 1985 "parsing/parser.mly" ( _1 ) -# 2595 "parsing/parser.ml" +# 2583 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2631,18 +2619,18 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 2637 "parsing/parser.ml" +# 2625 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1999 "parsing/parser.mly" +# 1987 "parsing/parser.mly" ( wrap_class_attrs ~loc:_sloc _3 _2 ) -# 2646 "parsing/parser.ml" +# 2634 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -2684,9 +2672,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2001 "parsing/parser.mly" +# 1989 "parsing/parser.mly" ( class_of_let_bindings ~loc:_sloc _1 _3 ) -# 2690 "parsing/parser.ml" +# 2678 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -2751,34 +2739,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2757 "parsing/parser.ml" +# 2745 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined2_ in let _4 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 2766 "parsing/parser.ml" +# 2754 "parsing/parser.ml" in let _3 = -# 4016 "parsing/parser.mly" +# 4187 "parsing/parser.mly" ( Fresh ) -# 2772 "parsing/parser.ml" +# 2760 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2003 "parsing/parser.mly" +# 1991 "parsing/parser.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkclass ~loc:_sloc ~attrs:_4 (Pcl_open(od, _7)) ) -# 2782 "parsing/parser.ml" +# 2770 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -2850,34 +2838,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2856 "parsing/parser.ml" +# 2844 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 2865 "parsing/parser.ml" +# 2853 "parsing/parser.ml" in let _3 = -# 4017 "parsing/parser.mly" +# 4188 "parsing/parser.mly" ( Override ) -# 2871 "parsing/parser.ml" +# 2859 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2003 "parsing/parser.mly" +# 1991 "parsing/parser.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkclass ~loc:_sloc ~attrs:_4 (Pcl_open(od, _7)) ) -# 2881 "parsing/parser.ml" +# 2869 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -2908,9 +2896,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = -# 2007 "parsing/parser.mly" +# 1995 "parsing/parser.mly" ( Cl.attr _1 _2 ) -# 2914 "parsing/parser.ml" +# 2902 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2946,18 +2934,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 2950 "parsing/parser.ml" +# 2938 "parsing/parser.ml" in -# 1086 "parsing/parser.mly" +# 1074 "parsing/parser.mly" ( xs ) -# 2955 "parsing/parser.ml" +# 2943 "parsing/parser.ml" in -# 2010 "parsing/parser.mly" +# 1998 "parsing/parser.mly" ( Pcl_apply(_1, _2) ) -# 2961 "parsing/parser.ml" +# 2949 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -2965,15 +2953,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1037 "parsing/parser.mly" +# 1025 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 2971 "parsing/parser.ml" +# 2959 "parsing/parser.ml" in ( -# 2013 "parsing/parser.mly" +# 2001 "parsing/parser.mly" ( _1 ) -# 2977 "parsing/parser.ml" +# 2965 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -2999,23 +2987,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2012 "parsing/parser.mly" +# 2000 "parsing/parser.mly" ( Pcl_extension _1 ) -# 3005 "parsing/parser.ml" +# 2993 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1037 "parsing/parser.mly" +# 1025 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 3013 "parsing/parser.ml" +# 3001 "parsing/parser.ml" in ( -# 2013 "parsing/parser.mly" +# 2001 "parsing/parser.mly" ( _1 ) -# 3019 "parsing/parser.ml" +# 3007 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -3070,33 +3058,33 @@ module Tables = struct let _6 = let _1 = _1_inlined2 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 3076 "parsing/parser.ml" +# 3064 "parsing/parser.ml" in let _endpos__6_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 3085 "parsing/parser.ml" +# 3073 "parsing/parser.ml" in let _2 = -# 4016 "parsing/parser.mly" +# 4187 "parsing/parser.mly" ( Fresh ) -# 3091 "parsing/parser.ml" +# 3079 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2062 "parsing/parser.mly" +# 2050 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_inherit (_2, _4, self)) ~attrs:(_3@_6) ~docs ) -# 3100 "parsing/parser.ml" +# 3088 "parsing/parser.ml" : (Parsetree.class_field)) in { @@ -3158,33 +3146,33 @@ module Tables = struct let _6 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 3164 "parsing/parser.ml" +# 3152 "parsing/parser.ml" in let _endpos__6_ = _endpos__1_inlined3_ in let _3 = let _1 = _1_inlined2 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 3173 "parsing/parser.ml" +# 3161 "parsing/parser.ml" in let _2 = -# 4017 "parsing/parser.mly" +# 4188 "parsing/parser.mly" ( Override ) -# 3179 "parsing/parser.ml" +# 3167 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2062 "parsing/parser.mly" +# 2050 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_inherit (_2, _4, self)) ~attrs:(_3@_6) ~docs ) -# 3188 "parsing/parser.ml" +# 3176 "parsing/parser.ml" : (Parsetree.class_field)) in { @@ -3227,9 +3215,9 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 3233 "parsing/parser.ml" +# 3221 "parsing/parser.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -3237,11 +3225,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2065 "parsing/parser.mly" +# 2053 "parsing/parser.mly" ( let v, attrs = _2 in let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_val v) ~attrs:(attrs@_3) ~docs ) -# 3245 "parsing/parser.ml" +# 3233 "parsing/parser.ml" : (Parsetree.class_field)) in { @@ -3284,9 +3272,9 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 3290 "parsing/parser.ml" +# 3278 "parsing/parser.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -3294,11 +3282,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2069 "parsing/parser.mly" +# 2057 "parsing/parser.mly" ( let meth, attrs = _2 in let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_method meth) ~attrs:(attrs@_3) ~docs ) -# 3302 "parsing/parser.ml" +# 3290 "parsing/parser.ml" : (Parsetree.class_field)) in { @@ -3346,28 +3334,28 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 3352 "parsing/parser.ml" +# 3340 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 3361 "parsing/parser.ml" +# 3349 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2073 "parsing/parser.mly" +# 2061 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_constraint _3) ~attrs:(_2@_4) ~docs ) -# 3371 "parsing/parser.ml" +# 3359 "parsing/parser.ml" : (Parsetree.class_field)) in { @@ -3415,28 +3403,28 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 3421 "parsing/parser.ml" +# 3409 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 3430 "parsing/parser.ml" +# 3418 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2076 "parsing/parser.mly" +# 2064 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_initializer _3) ~attrs:(_2@_4) ~docs ) -# 3440 "parsing/parser.ml" +# 3428 "parsing/parser.ml" : (Parsetree.class_field)) in { @@ -3470,9 +3458,9 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 3476 "parsing/parser.ml" +# 3464 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -3480,10 +3468,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2079 "parsing/parser.mly" +# 2067 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_extension _1) ~attrs:_2 ~docs ) -# 3487 "parsing/parser.ml" +# 3475 "parsing/parser.ml" : (Parsetree.class_field)) in { @@ -3509,23 +3497,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2082 "parsing/parser.mly" +# 2070 "parsing/parser.mly" ( Pcf_attribute _1 ) -# 3515 "parsing/parser.ml" +# 3503 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1035 "parsing/parser.mly" +# 1023 "parsing/parser.mly" ( mkcf ~loc:_sloc _1 ) -# 3523 "parsing/parser.ml" +# 3511 "parsing/parser.ml" in ( -# 2083 "parsing/parser.mly" +# 2071 "parsing/parser.mly" ( _1 ) -# 3529 "parsing/parser.ml" +# 3517 "parsing/parser.ml" : (Parsetree.class_field)) in { @@ -3556,9 +3544,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = -# 1977 "parsing/parser.mly" +# 1965 "parsing/parser.mly" ( _2 ) -# 3562 "parsing/parser.ml" +# 3550 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3604,24 +3592,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 1980 "parsing/parser.mly" +# 1968 "parsing/parser.mly" ( Pcl_constraint(_4, _2) ) -# 3610 "parsing/parser.ml" +# 3598 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1037 "parsing/parser.mly" +# 1025 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 3619 "parsing/parser.ml" +# 3607 "parsing/parser.ml" in ( -# 1983 "parsing/parser.mly" +# 1971 "parsing/parser.mly" ( _1 ) -# 3625 "parsing/parser.ml" +# 3613 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -3654,24 +3642,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 1982 "parsing/parser.mly" +# 1970 "parsing/parser.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, _2) ) -# 3660 "parsing/parser.ml" +# 3648 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1037 "parsing/parser.mly" +# 1025 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 3669 "parsing/parser.ml" +# 3657 "parsing/parser.ml" in ( -# 1983 "parsing/parser.mly" +# 1971 "parsing/parser.mly" ( _1 ) -# 3675 "parsing/parser.ml" +# 3663 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -3711,24 +3699,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 2038 "parsing/parser.mly" +# 2026 "parsing/parser.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, e) ) -# 3717 "parsing/parser.ml" +# 3705 "parsing/parser.ml" in let _endpos__1_ = _endpos_e_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1037 "parsing/parser.mly" +# 1025 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 3726 "parsing/parser.ml" +# 3714 "parsing/parser.ml" in ( -# 2039 "parsing/parser.mly" +# 2027 "parsing/parser.mly" ( _1 ) -# 3732 "parsing/parser.ml" +# 3720 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -3761,24 +3749,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 2038 "parsing/parser.mly" +# 2026 "parsing/parser.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, e) ) -# 3767 "parsing/parser.ml" +# 3755 "parsing/parser.ml" in let _endpos__1_ = _endpos_e_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1037 "parsing/parser.mly" +# 1025 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 3776 "parsing/parser.ml" +# 3764 "parsing/parser.ml" in ( -# 2039 "parsing/parser.mly" +# 2027 "parsing/parser.mly" ( _1 ) -# 3782 "parsing/parser.ml" +# 3770 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -3802,9 +3790,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3898 "parsing/parser.mly" +# 4069 "parsing/parser.mly" ( _1 ) -# 3808 "parsing/parser.ml" +# 3796 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3845,9 +3833,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2047 "parsing/parser.mly" +# 2035 "parsing/parser.mly" ( reloc_pat ~loc:_sloc _2 ) -# 3851 "parsing/parser.ml" +# 3839 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -3901,24 +3889,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 2049 "parsing/parser.mly" +# 2037 "parsing/parser.mly" ( Ppat_constraint(_2, _4) ) -# 3907 "parsing/parser.ml" +# 3895 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 3916 "parsing/parser.ml" +# 3904 "parsing/parser.ml" in ( -# 2050 "parsing/parser.mly" +# 2038 "parsing/parser.mly" ( _1 ) -# 3922 "parsing/parser.ml" +# 3910 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -3939,9 +3927,9 @@ module Tables = struct let _symbolstartpos = _endpos in let _sloc = (_symbolstartpos, _endpos) in ( -# 2052 "parsing/parser.mly" +# 2040 "parsing/parser.mly" ( ghpat ~loc:_sloc Ppat_any ) -# 3945 "parsing/parser.ml" +# 3933 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -3979,9 +3967,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = -# 2177 "parsing/parser.mly" +# 2165 "parsing/parser.mly" ( _2 ) -# 3985 "parsing/parser.ml" +# 3973 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3997,26 +3985,13 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v = - let _1 = - let _1 = -# 2178 "parsing/parser.mly" - ( Ptyp_any ) -# 4005 "parsing/parser.ml" - in - let _endpos__1_ = _endpos__0_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _endpos in - let _sloc = (_symbolstartpos, _endpos) in - -# 1021 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 4014 "parsing/parser.ml" - - in + let _endpos = _endpos__0_ in + let _symbolstartpos = _endpos in + let _sloc = (_symbolstartpos, _endpos) in ( -# 2179 "parsing/parser.mly" - ( _1 ) -# 4020 "parsing/parser.ml" +# 2167 "parsing/parser.mly" + ( ghtyp ~loc:_sloc Ptyp_any ) +# 3995 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -4064,28 +4039,28 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 4070 "parsing/parser.ml" +# 4045 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 4079 "parsing/parser.ml" +# 4054 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2187 "parsing/parser.mly" +# 2175 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_inherit _3) ~attrs:(_2@_4) ~docs ) -# 4089 "parsing/parser.ml" +# 4064 "parsing/parser.ml" : (Parsetree.class_type_field)) in { @@ -4144,9 +4119,9 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _3 : unit = Obj.magic _3 in let _1_inlined2 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 4150 "parsing/parser.ml" +# 4125 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let flags : (Asttypes.mutable_flag * Asttypes.virtual_flag) = Obj.magic flags in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -4158,9 +4133,9 @@ module Tables = struct let _4 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 4164 "parsing/parser.ml" +# 4139 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined3_ in @@ -4168,44 +4143,44 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let label = let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 4174 "parsing/parser.ml" +# 4149 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 4182 "parsing/parser.ml" +# 4157 "parsing/parser.ml" in -# 2212 "parsing/parser.mly" +# 2200 "parsing/parser.mly" ( let mut, virt = flags in label, mut, virt, ty ) -# 4191 "parsing/parser.ml" +# 4166 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 4199 "parsing/parser.ml" +# 4174 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2190 "parsing/parser.mly" +# 2178 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_val _3) ~attrs:(_2@_4) ~docs ) -# 4209 "parsing/parser.ml" +# 4184 "parsing/parser.ml" : (Parsetree.class_type_field)) in { @@ -4264,9 +4239,9 @@ module Tables = struct let _1_inlined3 : (Parsetree.core_type) = Obj.magic _1_inlined3 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 4270 "parsing/parser.ml" +# 4245 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.private_flag * Asttypes.virtual_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -4278,53 +4253,53 @@ module Tables = struct let _7 = let _1 = _1_inlined4 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 4284 "parsing/parser.ml" +# 4259 "parsing/parser.ml" in let _endpos__7_ = _endpos__1_inlined4_ in let _6 = let _1 = _1_inlined3 in -# 3480 "parsing/parser.mly" +# 3604 "parsing/parser.mly" ( _1 ) -# 4293 "parsing/parser.ml" +# 4268 "parsing/parser.ml" in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 4301 "parsing/parser.ml" +# 4276 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 4309 "parsing/parser.ml" +# 4284 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 4317 "parsing/parser.ml" +# 4292 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2194 "parsing/parser.mly" +# 2182 "parsing/parser.mly" ( let (p, v) = _3 in let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_method (_4, p, v, _6)) ~attrs:(_2@_7) ~docs ) -# 4328 "parsing/parser.ml" +# 4303 "parsing/parser.ml" : (Parsetree.class_type_field)) in { @@ -4372,28 +4347,28 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 4378 "parsing/parser.ml" +# 4353 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 4387 "parsing/parser.ml" +# 4362 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2198 "parsing/parser.mly" +# 2186 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_constraint _3) ~attrs:(_2@_4) ~docs ) -# 4397 "parsing/parser.ml" +# 4372 "parsing/parser.ml" : (Parsetree.class_type_field)) in { @@ -4427,9 +4402,9 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 4433 "parsing/parser.ml" +# 4408 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -4437,10 +4412,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2201 "parsing/parser.mly" +# 2189 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_extension _1) ~attrs:_2 ~docs ) -# 4444 "parsing/parser.ml" +# 4419 "parsing/parser.ml" : (Parsetree.class_type_field)) in { @@ -4466,23 +4441,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2204 "parsing/parser.mly" +# 2192 "parsing/parser.mly" ( Pctf_attribute _1 ) -# 4472 "parsing/parser.ml" +# 4447 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1033 "parsing/parser.mly" +# 1021 "parsing/parser.mly" ( mkctf ~loc:_sloc _1 ) -# 4480 "parsing/parser.ml" +# 4455 "parsing/parser.ml" in ( -# 2205 "parsing/parser.mly" +# 2193 "parsing/parser.mly" ( _1 ) -# 4486 "parsing/parser.ml" +# 4461 "parsing/parser.ml" : (Parsetree.class_type_field)) in { @@ -4513,42 +4488,42 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 4519 "parsing/parser.ml" +# 4494 "parsing/parser.ml" in let tys = let tys = -# 2163 "parsing/parser.mly" +# 2151 "parsing/parser.mly" ( [] ) -# 4526 "parsing/parser.ml" +# 4501 "parsing/parser.ml" in -# 2169 "parsing/parser.mly" +# 2157 "parsing/parser.mly" ( tys ) -# 4531 "parsing/parser.ml" +# 4506 "parsing/parser.ml" in -# 2146 "parsing/parser.mly" +# 2134 "parsing/parser.mly" ( Pcty_constr (cid, tys) ) -# 4537 "parsing/parser.ml" +# 4512 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "parsing/parser.mly" +# 1019 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 4546 "parsing/parser.ml" +# 4521 "parsing/parser.ml" in ( -# 2149 "parsing/parser.mly" +# 2137 "parsing/parser.mly" ( _1 ) -# 4552 "parsing/parser.ml" +# 4527 "parsing/parser.ml" : (Parsetree.class_type)) in { @@ -4601,9 +4576,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 4607 "parsing/parser.ml" +# 4582 "parsing/parser.ml" in let tys = @@ -4612,30 +4587,30 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 4616 "parsing/parser.ml" +# 4591 "parsing/parser.ml" in -# 1139 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( xs ) -# 4621 "parsing/parser.ml" +# 4596 "parsing/parser.ml" in -# 2165 "parsing/parser.mly" +# 2153 "parsing/parser.mly" ( params ) -# 4627 "parsing/parser.ml" +# 4602 "parsing/parser.ml" in -# 2169 "parsing/parser.mly" +# 2157 "parsing/parser.mly" ( tys ) -# 4633 "parsing/parser.ml" +# 4608 "parsing/parser.ml" in -# 2146 "parsing/parser.mly" +# 2134 "parsing/parser.mly" ( Pcty_constr (cid, tys) ) -# 4639 "parsing/parser.ml" +# 4614 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -4643,15 +4618,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "parsing/parser.mly" +# 1019 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 4649 "parsing/parser.ml" +# 4624 "parsing/parser.ml" in ( -# 2149 "parsing/parser.mly" +# 2137 "parsing/parser.mly" ( _1 ) -# 4655 "parsing/parser.ml" +# 4630 "parsing/parser.ml" : (Parsetree.class_type)) in { @@ -4677,23 +4652,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2148 "parsing/parser.mly" +# 2136 "parsing/parser.mly" ( Pcty_extension _1 ) -# 4683 "parsing/parser.ml" +# 4658 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "parsing/parser.mly" +# 1019 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 4691 "parsing/parser.ml" +# 4666 "parsing/parser.ml" in ( -# 2149 "parsing/parser.mly" +# 2137 "parsing/parser.mly" ( _1 ) -# 4697 "parsing/parser.ml" +# 4672 "parsing/parser.ml" : (Parsetree.class_type)) in { @@ -4752,44 +4727,44 @@ module Tables = struct let _1 = # 271 "" ( List.flatten xss ) -# 4756 "parsing/parser.ml" +# 4731 "parsing/parser.ml" in -# 2183 "parsing/parser.mly" +# 2171 "parsing/parser.mly" ( _1 ) -# 4761 "parsing/parser.ml" +# 4736 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 979 "parsing/parser.mly" +# 967 "parsing/parser.mly" ( extra_csig _startpos _endpos _1 ) -# 4770 "parsing/parser.ml" +# 4745 "parsing/parser.ml" in -# 2173 "parsing/parser.mly" +# 2161 "parsing/parser.mly" ( Csig.mk _1 _2 ) -# 4776 "parsing/parser.ml" +# 4751 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 4784 "parsing/parser.ml" +# 4759 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2151 "parsing/parser.mly" +# 2139 "parsing/parser.mly" ( mkcty ~loc:_sloc ~attrs:_2 (Pcty_signature _3) ) -# 4793 "parsing/parser.ml" +# 4768 "parsing/parser.ml" : (Parsetree.class_type)) in { @@ -4848,43 +4823,43 @@ module Tables = struct let _1 = # 271 "" ( List.flatten xss ) -# 4852 "parsing/parser.ml" +# 4827 "parsing/parser.ml" in -# 2183 "parsing/parser.mly" +# 2171 "parsing/parser.mly" ( _1 ) -# 4857 "parsing/parser.ml" +# 4832 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 979 "parsing/parser.mly" +# 967 "parsing/parser.mly" ( extra_csig _startpos _endpos _1 ) -# 4866 "parsing/parser.ml" +# 4841 "parsing/parser.ml" in -# 2173 "parsing/parser.mly" +# 2161 "parsing/parser.mly" ( Csig.mk _1 _2 ) -# 4872 "parsing/parser.ml" +# 4847 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 4880 "parsing/parser.ml" +# 4855 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 2153 "parsing/parser.mly" +# 2141 "parsing/parser.mly" ( unclosed "object" _loc__1_ "end" _loc__4_ ) -# 4888 "parsing/parser.ml" +# 4863 "parsing/parser.ml" : (Parsetree.class_type)) in { @@ -4915,9 +4890,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_type) = -# 2155 "parsing/parser.mly" +# 2143 "parsing/parser.mly" ( Cty.attr _1 _2 ) -# 4921 "parsing/parser.ml" +# 4896 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4981,34 +4956,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 4987 "parsing/parser.ml" +# 4962 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined2_ in let _4 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 4996 "parsing/parser.ml" +# 4971 "parsing/parser.ml" in let _3 = -# 4016 "parsing/parser.mly" +# 4187 "parsing/parser.mly" ( Fresh ) -# 5002 "parsing/parser.ml" +# 4977 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2157 "parsing/parser.mly" +# 2145 "parsing/parser.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkcty ~loc:_sloc ~attrs:_4 (Pcty_open(od, _7)) ) -# 5012 "parsing/parser.ml" +# 4987 "parsing/parser.ml" : (Parsetree.class_type)) in { @@ -5080,34 +5055,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 5086 "parsing/parser.ml" +# 5061 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 5095 "parsing/parser.ml" +# 5070 "parsing/parser.ml" in let _3 = -# 4017 "parsing/parser.mly" +# 4188 "parsing/parser.mly" ( Override ) -# 5101 "parsing/parser.ml" +# 5076 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2157 "parsing/parser.mly" +# 2145 "parsing/parser.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkcty ~loc:_sloc ~attrs:_4 (Pcty_open(od, _7)) ) -# 5111 "parsing/parser.ml" +# 5086 "parsing/parser.ml" : (Parsetree.class_type)) in { @@ -5145,9 +5120,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.class_expr) = -# 2017 "parsing/parser.mly" +# 2005 "parsing/parser.mly" ( _2 ) -# 5151 "parsing/parser.ml" +# 5126 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5187,9 +5162,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 2019 "parsing/parser.mly" +# 2007 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 5193 "parsing/parser.ml" +# 5168 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -5220,42 +5195,42 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 5226 "parsing/parser.ml" +# 5201 "parsing/parser.ml" in let tys = let tys = -# 2163 "parsing/parser.mly" +# 2151 "parsing/parser.mly" ( [] ) -# 5233 "parsing/parser.ml" +# 5208 "parsing/parser.ml" in -# 2169 "parsing/parser.mly" +# 2157 "parsing/parser.mly" ( tys ) -# 5238 "parsing/parser.ml" +# 5213 "parsing/parser.ml" in -# 2022 "parsing/parser.mly" +# 2010 "parsing/parser.mly" ( Pcl_constr(cid, tys) ) -# 5244 "parsing/parser.ml" +# 5219 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1037 "parsing/parser.mly" +# 1025 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 5253 "parsing/parser.ml" +# 5228 "parsing/parser.ml" in ( -# 2029 "parsing/parser.mly" +# 2017 "parsing/parser.mly" ( _1 ) -# 5259 "parsing/parser.ml" +# 5234 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -5308,9 +5283,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 5314 "parsing/parser.ml" +# 5289 "parsing/parser.ml" in let tys = @@ -5319,30 +5294,30 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 5323 "parsing/parser.ml" +# 5298 "parsing/parser.ml" in -# 1139 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( xs ) -# 5328 "parsing/parser.ml" +# 5303 "parsing/parser.ml" in -# 2165 "parsing/parser.mly" +# 2153 "parsing/parser.mly" ( params ) -# 5334 "parsing/parser.ml" +# 5309 "parsing/parser.ml" in -# 2169 "parsing/parser.mly" +# 2157 "parsing/parser.mly" ( tys ) -# 5340 "parsing/parser.ml" +# 5315 "parsing/parser.ml" in -# 2022 "parsing/parser.mly" +# 2010 "parsing/parser.mly" ( Pcl_constr(cid, tys) ) -# 5346 "parsing/parser.ml" +# 5321 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -5350,15 +5325,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1037 "parsing/parser.mly" +# 1025 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 5356 "parsing/parser.ml" +# 5331 "parsing/parser.ml" in ( -# 2029 "parsing/parser.mly" +# 2017 "parsing/parser.mly" ( _1 ) -# 5362 "parsing/parser.ml" +# 5337 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -5419,43 +5394,43 @@ module Tables = struct let _1 = # 271 "" ( List.flatten xss ) -# 5423 "parsing/parser.ml" +# 5398 "parsing/parser.ml" in -# 2056 "parsing/parser.mly" +# 2044 "parsing/parser.mly" ( _1 ) -# 5428 "parsing/parser.ml" +# 5403 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 978 "parsing/parser.mly" +# 966 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 5437 "parsing/parser.ml" +# 5412 "parsing/parser.ml" in -# 2043 "parsing/parser.mly" +# 2031 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 5443 "parsing/parser.ml" +# 5418 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 5451 "parsing/parser.ml" +# 5426 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2024 "parsing/parser.mly" +# 2012 "parsing/parser.mly" ( unclosed "object" _loc__1_ "end" _loc__4_ ) -# 5459 "parsing/parser.ml" +# 5434 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -5463,15 +5438,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1037 "parsing/parser.mly" +# 1025 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 5469 "parsing/parser.ml" +# 5444 "parsing/parser.ml" in ( -# 2029 "parsing/parser.mly" +# 2017 "parsing/parser.mly" ( _1 ) -# 5475 "parsing/parser.ml" +# 5450 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -5525,24 +5500,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 2026 "parsing/parser.mly" +# 2014 "parsing/parser.mly" ( Pcl_constraint(_2, _4) ) -# 5531 "parsing/parser.ml" +# 5506 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1037 "parsing/parser.mly" +# 1025 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 5540 "parsing/parser.ml" +# 5515 "parsing/parser.ml" in ( -# 2029 "parsing/parser.mly" +# 2017 "parsing/parser.mly" ( _1 ) -# 5546 "parsing/parser.ml" +# 5521 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -5599,9 +5574,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2028 "parsing/parser.mly" +# 2016 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 5605 "parsing/parser.ml" +# 5580 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -5609,15 +5584,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1037 "parsing/parser.mly" +# 1025 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 5615 "parsing/parser.ml" +# 5590 "parsing/parser.ml" in ( -# 2029 "parsing/parser.mly" +# 2017 "parsing/parser.mly" ( _1 ) -# 5621 "parsing/parser.ml" +# 5596 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -5676,44 +5651,44 @@ module Tables = struct let _1 = # 271 "" ( List.flatten xss ) -# 5680 "parsing/parser.ml" +# 5655 "parsing/parser.ml" in -# 2056 "parsing/parser.mly" +# 2044 "parsing/parser.mly" ( _1 ) -# 5685 "parsing/parser.ml" +# 5660 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 978 "parsing/parser.mly" +# 966 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 5694 "parsing/parser.ml" +# 5669 "parsing/parser.ml" in -# 2043 "parsing/parser.mly" +# 2031 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 5700 "parsing/parser.ml" +# 5675 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 5708 "parsing/parser.ml" +# 5683 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2031 "parsing/parser.mly" +# 2019 "parsing/parser.mly" ( mkclass ~loc:_sloc ~attrs:_2 (Pcl_structure _3) ) -# 5717 "parsing/parser.ml" +# 5692 "parsing/parser.ml" : (Parsetree.class_expr)) in { @@ -5737,9 +5712,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.class_type) = -# 2134 "parsing/parser.mly" +# 2122 "parsing/parser.mly" ( _1 ) -# 5743 "parsing/parser.ml" +# 5718 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5786,14 +5761,14 @@ module Tables = struct let _1 = let _1 = let label = -# 3543 "parsing/parser.mly" +# 3695 "parsing/parser.mly" ( Optional label ) -# 5792 "parsing/parser.ml" +# 5767 "parsing/parser.ml" in -# 2140 "parsing/parser.mly" +# 2128 "parsing/parser.mly" ( Pcty_arrow(label, domain, codomain) ) -# 5797 "parsing/parser.ml" +# 5772 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -5801,15 +5776,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "parsing/parser.mly" +# 1019 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 5807 "parsing/parser.ml" +# 5782 "parsing/parser.ml" in ( -# 2141 "parsing/parser.mly" +# 2129 "parsing/parser.mly" ( _1 ) -# 5813 "parsing/parser.ml" +# 5788 "parsing/parser.ml" : (Parsetree.class_type)) in { @@ -5857,9 +5832,9 @@ module Tables = struct let domain : (Parsetree.core_type) = Obj.magic domain in let _2 : unit = Obj.magic _2 in let label : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 5863 "parsing/parser.ml" +# 5838 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -5868,14 +5843,14 @@ module Tables = struct let _1 = let _1 = let label = -# 3545 "parsing/parser.mly" +# 3697 "parsing/parser.mly" ( Labelled label ) -# 5874 "parsing/parser.ml" +# 5849 "parsing/parser.ml" in -# 2140 "parsing/parser.mly" +# 2128 "parsing/parser.mly" ( Pcty_arrow(label, domain, codomain) ) -# 5879 "parsing/parser.ml" +# 5854 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -5883,15 +5858,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "parsing/parser.mly" +# 1019 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 5889 "parsing/parser.ml" +# 5864 "parsing/parser.ml" in ( -# 2141 "parsing/parser.mly" +# 2129 "parsing/parser.mly" ( _1 ) -# 5895 "parsing/parser.ml" +# 5870 "parsing/parser.ml" : (Parsetree.class_type)) in { @@ -5932,14 +5907,14 @@ module Tables = struct let _1 = let _1 = let label = -# 3547 "parsing/parser.mly" +# 3699 "parsing/parser.mly" ( Nolabel ) -# 5938 "parsing/parser.ml" +# 5913 "parsing/parser.ml" in -# 2140 "parsing/parser.mly" +# 2128 "parsing/parser.mly" ( Pcty_arrow(label, domain, codomain) ) -# 5943 "parsing/parser.ml" +# 5918 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_domain_) in @@ -5947,15 +5922,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1031 "parsing/parser.mly" +# 1019 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 5953 "parsing/parser.ml" +# 5928 "parsing/parser.ml" in ( -# 2141 "parsing/parser.mly" +# 2129 "parsing/parser.mly" ( _1 ) -# 5959 "parsing/parser.ml" +# 5934 "parsing/parser.ml" : (Parsetree.class_type)) in { @@ -6039,9 +6014,9 @@ module Tables = struct let csig : (Parsetree.class_type) = Obj.magic csig in let _8 : unit = Obj.magic _8 in let _1_inlined2 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 6045 "parsing/parser.ml" +# 6020 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -6058,9 +6033,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 6064 "parsing/parser.ml" +# 6039 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -6070,24 +6045,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 6076 "parsing/parser.ml" +# 6051 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 6084 "parsing/parser.ml" +# 6059 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2279 "parsing/parser.mly" +# 2267 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -6095,19 +6070,19 @@ module Tables = struct ext, Ci.mk id csig ~virt ~params ~attrs ~loc ~docs ) -# 6099 "parsing/parser.ml" +# 6074 "parsing/parser.ml" in -# 1236 "parsing/parser.mly" +# 1224 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 6105 "parsing/parser.ml" +# 6080 "parsing/parser.ml" in ( -# 2267 "parsing/parser.mly" +# 2255 "parsing/parser.mly" ( _1 ) -# 6111 "parsing/parser.ml" +# 6086 "parsing/parser.ml" : (string Asttypes.loc option * Parsetree.class_type_declaration list)) in { @@ -6131,9 +6106,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3895 "parsing/parser.mly" +# 4066 "parsing/parser.mly" ( _1 ) -# 6137 "parsing/parser.ml" +# 6112 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6152,9 +6127,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 783 "parsing/parser.mly" +# 771 "parsing/parser.mly" (string * char option) -# 6158 "parsing/parser.ml" +# 6133 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -6164,10 +6139,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3771 "parsing/parser.mly" +# 3942 "parsing/parser.mly" ( let (n, m) = _1 in mkconst ~loc:_sloc (Pconst_integer (n, m)) ) -# 6171 "parsing/parser.ml" +# 6146 "parsing/parser.ml" : (Parsetree.constant)) in { @@ -6187,9 +6162,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 741 "parsing/parser.mly" +# 729 "parsing/parser.mly" (char) -# 6193 "parsing/parser.ml" +# 6168 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -6199,9 +6174,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3773 "parsing/parser.mly" +# 3944 "parsing/parser.mly" ( mkconst ~loc:_sloc (Pconst_char _1) ) -# 6205 "parsing/parser.ml" +# 6180 "parsing/parser.ml" : (Parsetree.constant)) in { @@ -6221,9 +6196,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 835 "parsing/parser.mly" +# 823 "parsing/parser.mly" (string * Location.t * string option) -# 6227 "parsing/parser.ml" +# 6202 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -6233,10 +6208,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3774 "parsing/parser.mly" +# 3945 "parsing/parser.mly" ( let (s, strloc, d) = _1 in mkconst ~loc:_sloc (Pconst_string (s,strloc,d)) ) -# 6240 "parsing/parser.ml" +# 6215 "parsing/parser.ml" : (Parsetree.constant)) in { @@ -6256,9 +6231,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 762 "parsing/parser.mly" +# 750 "parsing/parser.mly" (string * char option) -# 6262 "parsing/parser.ml" +# 6237 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -6268,10 +6243,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3776 "parsing/parser.mly" +# 3947 "parsing/parser.mly" ( let (f, m) = _1 in mkconst ~loc:_sloc (Pconst_float (f, m)) ) -# 6275 "parsing/parser.ml" +# 6250 "parsing/parser.ml" : (Parsetree.constant)) in { @@ -6302,9 +6277,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.label) = -# 3852 "parsing/parser.mly" +# 4023 "parsing/parser.mly" ( "[]" ) -# 6308 "parsing/parser.ml" +# 6283 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6334,9 +6309,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.label) = -# 3853 "parsing/parser.mly" +# 4024 "parsing/parser.mly" ( "()" ) -# 6340 "parsing/parser.ml" +# 6315 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6359,9 +6334,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 3854 "parsing/parser.mly" +# 4025 "parsing/parser.mly" ( "false" ) -# 6365 "parsing/parser.ml" +# 6340 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6384,9 +6359,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 3855 "parsing/parser.mly" +# 4026 "parsing/parser.mly" ( "true" ) -# 6390 "parsing/parser.ml" +# 6365 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6405,17 +6380,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 848 "parsing/parser.mly" +# 836 "parsing/parser.mly" (string) -# 6411 "parsing/parser.ml" +# 6386 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 3858 "parsing/parser.mly" +# 4029 "parsing/parser.mly" ( _1 ) -# 6419 "parsing/parser.ml" +# 6394 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6453,14 +6428,14 @@ module Tables = struct let _endpos = _endpos__3_ in let _v = let _1 = -# 3849 "parsing/parser.mly" +# 4020 "parsing/parser.mly" ( "::" ) -# 6459 "parsing/parser.ml" +# 6434 "parsing/parser.ml" in ( -# 3859 "parsing/parser.mly" +# 4030 "parsing/parser.mly" ( _1 ) -# 6464 "parsing/parser.ml" +# 6439 "parsing/parser.ml" : (Asttypes.label)) in { @@ -6484,9 +6459,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 3860 "parsing/parser.mly" +# 4031 "parsing/parser.mly" ( _1 ) -# 6490 "parsing/parser.ml" +# 6465 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6509,9 +6484,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3863 "parsing/parser.mly" +# 4034 "parsing/parser.mly" ( _1 ) -# 6515 "parsing/parser.ml" +# 6490 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6563,14 +6538,17 @@ module Tables = struct let _endpos = _endpos__3_ in let _v = let _3 = -# 3849 "parsing/parser.mly" +# 4020 "parsing/parser.mly" ( "::" ) -# 6569 "parsing/parser.ml" +# 6544 "parsing/parser.ml" in + let _startpos__3_ = _startpos__1_inlined1_ in + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3864 "parsing/parser.mly" - ( Ldot(_1,_3) ) -# 6574 "parsing/parser.ml" +# 4035 "parsing/parser.mly" + ( ldot _1 _loc__1_ _3 _loc__3_ ) +# 6552 "parsing/parser.ml" : (Longident.t)) in { @@ -6609,14 +6587,14 @@ module Tables = struct let _endpos = _endpos__3_ in let _v = let _1 = -# 3849 "parsing/parser.mly" +# 4020 "parsing/parser.mly" ( "::" ) -# 6615 "parsing/parser.ml" +# 6593 "parsing/parser.ml" in ( -# 3865 "parsing/parser.mly" +# 4036 "parsing/parser.mly" ( Lident _1 ) -# 6620 "parsing/parser.ml" +# 6598 "parsing/parser.ml" : (Longident.t)) in { @@ -6640,9 +6618,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3866 "parsing/parser.mly" +# 4037 "parsing/parser.mly" ( Lident _1 ) -# 6646 "parsing/parser.ml" +# 6624 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6679,9 +6657,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type * Parsetree.core_type) = -# 2223 "parsing/parser.mly" +# 2211 "parsing/parser.mly" ( _1, _3 ) -# 6685 "parsing/parser.ml" +# 6663 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6707,26 +6685,26 @@ module Tables = struct let tys = let xs = let xs = -# 1123 "parsing/parser.mly" +# 1111 "parsing/parser.mly" ( [ x ] ) -# 6713 "parsing/parser.ml" +# 6691 "parsing/parser.ml" in # 264 "" ( List.rev xs ) -# 6718 "parsing/parser.ml" +# 6696 "parsing/parser.ml" in -# 1143 "parsing/parser.mly" +# 1131 "parsing/parser.mly" ( xs ) -# 6724 "parsing/parser.ml" +# 6702 "parsing/parser.ml" in ( -# 3346 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( Pcstr_tuple tys ) -# 6730 "parsing/parser.ml" +# 6708 "parsing/parser.ml" : (Parsetree.constructor_arguments)) in { @@ -6767,26 +6745,26 @@ module Tables = struct let tys = let xs = let xs = -# 1127 "parsing/parser.mly" +# 1115 "parsing/parser.mly" ( x :: xs ) -# 6773 "parsing/parser.ml" +# 6751 "parsing/parser.ml" in # 264 "" ( List.rev xs ) -# 6778 "parsing/parser.ml" +# 6756 "parsing/parser.ml" in -# 1143 "parsing/parser.mly" +# 1131 "parsing/parser.mly" ( xs ) -# 6784 "parsing/parser.ml" +# 6762 "parsing/parser.ml" in ( -# 3346 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( Pcstr_tuple tys ) -# 6790 "parsing/parser.ml" +# 6768 "parsing/parser.ml" : (Parsetree.constructor_arguments)) in { @@ -6824,9 +6802,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.constructor_arguments) = -# 3348 "parsing/parser.mly" +# 3471 "parsing/parser.mly" ( Pcstr_record _2 ) -# 6830 "parsing/parser.ml" +# 6808 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6849,9 +6827,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constructor_declaration list) = -# 3262 "parsing/parser.mly" +# 3385 "parsing/parser.mly" ( [] ) -# 6855 "parsing/parser.ml" +# 6833 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6875,14 +6853,14 @@ module Tables = struct let _endpos = _endpos_xs_ in let _v = let cs = -# 1228 "parsing/parser.mly" +# 1216 "parsing/parser.mly" ( List.rev xs ) -# 6881 "parsing/parser.ml" +# 6859 "parsing/parser.ml" in ( -# 3264 "parsing/parser.mly" +# 3387 "parsing/parser.mly" ( cs ) -# 6886 "parsing/parser.ml" +# 6864 "parsing/parser.ml" : (Parsetree.constructor_declaration list)) in { @@ -6907,14 +6885,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 3505 "parsing/parser.mly" +# 3629 "parsing/parser.mly" ( _1 ) -# 6913 "parsing/parser.ml" +# 6891 "parsing/parser.ml" in ( -# 3495 "parsing/parser.mly" +# 3619 "parsing/parser.mly" ( _1 ) -# 6918 "parsing/parser.ml" +# 6896 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -6945,9 +6923,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = -# 3497 "parsing/parser.mly" +# 3621 "parsing/parser.mly" ( Typ.attr _1 _2 ) -# 6951 "parsing/parser.ml" +# 6929 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6970,9 +6948,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3645 "parsing/parser.mly" +# 3814 "parsing/parser.mly" ( _1 ) -# 6976 "parsing/parser.ml" +# 6954 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6995,9 +6973,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3645 "parsing/parser.mly" +# 3814 "parsing/parser.mly" ( _1 ) -# 7001 "parsing/parser.ml" +# 6979 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7020,9 +6998,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3645 "parsing/parser.mly" +# 3814 "parsing/parser.mly" ( _1 ) -# 7026 "parsing/parser.ml" +# 7004 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7059,9 +7037,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = -# 3598 "parsing/parser.mly" +# 3767 "parsing/parser.mly" ( type_ ) -# 7065 "parsing/parser.ml" +# 7043 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7125,36 +7103,35 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3691 "parsing/parser.mly" +# 3860 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 7133 "parsing/parser.ml" + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 7110 "parsing/parser.ml" in - let attrs = + let ext_attrs = let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 7143 "parsing/parser.ml" +# 7120 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 7149 "parsing/parser.ml" +# 7126 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3600 "parsing/parser.mly" - ( wrap_typ_attrs ~loc:_sloc (reloc_typ ~loc:_sloc package_type) attrs ) -# 7158 "parsing/parser.ml" +# 3769 "parsing/parser.mly" + ( mktyp_attrs ~loc:_sloc (Ptyp_package package_type) ext_attrs ) +# 7135 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -7194,24 +7171,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3603 "parsing/parser.mly" +# 3772 "parsing/parser.mly" ( Ptyp_variant([ field ], Closed, None) ) -# 7200 "parsing/parser.ml" +# 7177 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 7209 "parsing/parser.ml" +# 7186 "parsing/parser.ml" in ( -# 3620 "parsing/parser.mly" +# 3789 "parsing/parser.mly" ( _1 ) -# 7215 "parsing/parser.ml" +# 7192 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -7263,24 +7240,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 7267 "parsing/parser.ml" +# 7244 "parsing/parser.ml" in -# 1139 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( xs ) -# 7272 "parsing/parser.ml" +# 7249 "parsing/parser.ml" in -# 3697 "parsing/parser.mly" +# 3868 "parsing/parser.mly" ( _1 ) -# 7278 "parsing/parser.ml" +# 7255 "parsing/parser.ml" in -# 3605 "parsing/parser.mly" +# 3774 "parsing/parser.mly" ( Ptyp_variant(fields, Closed, None) ) -# 7284 "parsing/parser.ml" +# 7261 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -7288,15 +7265,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 7294 "parsing/parser.ml" +# 7271 "parsing/parser.ml" in ( -# 3620 "parsing/parser.mly" +# 3789 "parsing/parser.mly" ( _1 ) -# 7300 "parsing/parser.ml" +# 7277 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -7355,24 +7332,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 7359 "parsing/parser.ml" +# 7336 "parsing/parser.ml" in -# 1139 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( xs ) -# 7364 "parsing/parser.ml" +# 7341 "parsing/parser.ml" in -# 3697 "parsing/parser.mly" +# 3868 "parsing/parser.mly" ( _1 ) -# 7370 "parsing/parser.ml" +# 7347 "parsing/parser.ml" in -# 3607 "parsing/parser.mly" +# 3776 "parsing/parser.mly" ( Ptyp_variant(field :: fields, Closed, None) ) -# 7376 "parsing/parser.ml" +# 7353 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -7380,15 +7357,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 7386 "parsing/parser.ml" +# 7363 "parsing/parser.ml" in ( -# 3620 "parsing/parser.mly" +# 3789 "parsing/parser.mly" ( _1 ) -# 7392 "parsing/parser.ml" +# 7369 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -7440,24 +7417,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 7444 "parsing/parser.ml" +# 7421 "parsing/parser.ml" in -# 1139 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( xs ) -# 7449 "parsing/parser.ml" +# 7426 "parsing/parser.ml" in -# 3697 "parsing/parser.mly" +# 3868 "parsing/parser.mly" ( _1 ) -# 7455 "parsing/parser.ml" +# 7432 "parsing/parser.ml" in -# 3609 "parsing/parser.mly" +# 3778 "parsing/parser.mly" ( Ptyp_variant(fields, Open, None) ) -# 7461 "parsing/parser.ml" +# 7438 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -7465,15 +7442,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 7471 "parsing/parser.ml" +# 7448 "parsing/parser.ml" in ( -# 3620 "parsing/parser.mly" +# 3789 "parsing/parser.mly" ( _1 ) -# 7477 "parsing/parser.ml" +# 7454 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -7506,24 +7483,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3611 "parsing/parser.mly" +# 3780 "parsing/parser.mly" ( Ptyp_variant([], Open, None) ) -# 7512 "parsing/parser.ml" +# 7489 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 7521 "parsing/parser.ml" +# 7498 "parsing/parser.ml" in ( -# 3620 "parsing/parser.mly" +# 3789 "parsing/parser.mly" ( _1 ) -# 7527 "parsing/parser.ml" +# 7504 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -7575,24 +7552,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 7579 "parsing/parser.ml" +# 7556 "parsing/parser.ml" in -# 1139 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( xs ) -# 7584 "parsing/parser.ml" +# 7561 "parsing/parser.ml" in -# 3697 "parsing/parser.mly" +# 3868 "parsing/parser.mly" ( _1 ) -# 7590 "parsing/parser.ml" +# 7567 "parsing/parser.ml" in -# 3613 "parsing/parser.mly" +# 3782 "parsing/parser.mly" ( Ptyp_variant(fields, Closed, Some []) ) -# 7596 "parsing/parser.ml" +# 7573 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -7600,15 +7577,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 7606 "parsing/parser.ml" +# 7583 "parsing/parser.ml" in ( -# 3620 "parsing/parser.mly" +# 3789 "parsing/parser.mly" ( _1 ) -# 7612 "parsing/parser.ml" +# 7589 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -7675,18 +7652,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 7679 "parsing/parser.ml" +# 7656 "parsing/parser.ml" in -# 1086 "parsing/parser.mly" +# 1074 "parsing/parser.mly" ( xs ) -# 7684 "parsing/parser.ml" +# 7661 "parsing/parser.ml" in -# 3725 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( _1 ) -# 7690 "parsing/parser.ml" +# 7667 "parsing/parser.ml" in let fields = @@ -7694,24 +7671,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 7698 "parsing/parser.ml" +# 7675 "parsing/parser.ml" in -# 1139 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( xs ) -# 7703 "parsing/parser.ml" +# 7680 "parsing/parser.ml" in -# 3697 "parsing/parser.mly" +# 3868 "parsing/parser.mly" ( _1 ) -# 7709 "parsing/parser.ml" +# 7686 "parsing/parser.ml" in -# 3618 "parsing/parser.mly" +# 3787 "parsing/parser.mly" ( Ptyp_variant(fields, Closed, Some tags) ) -# 7715 "parsing/parser.ml" +# 7692 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -7719,15 +7696,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 7725 "parsing/parser.ml" +# 7702 "parsing/parser.ml" in ( -# 3620 "parsing/parser.mly" +# 3789 "parsing/parser.mly" ( _1 ) -# 7731 "parsing/parser.ml" +# 7708 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -7751,9 +7728,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.direction_flag) = -# 3961 "parsing/parser.mly" +# 4132 "parsing/parser.mly" ( Upto ) -# 7757 "parsing/parser.ml" +# 7734 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7776,9 +7753,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.direction_flag) = -# 3962 "parsing/parser.mly" +# 4133 "parsing/parser.mly" ( Downto ) -# 7782 "parsing/parser.ml" +# 7759 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7794,9 +7771,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (string Asttypes.loc option) = -# 4117 "parsing/parser.mly" +# 4289 "parsing/parser.mly" ( None ) -# 7800 "parsing/parser.ml" +# 7777 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7826,9 +7803,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (string Asttypes.loc option) = -# 4118 "parsing/parser.mly" +# 4290 "parsing/parser.mly" ( Some _2 ) -# 7832 "parsing/parser.ml" +# 7809 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7872,9 +7849,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.extension) = -# 4130 "parsing/parser.mly" +# 4302 "parsing/parser.mly" ( (_2, _3) ) -# 7878 "parsing/parser.ml" +# 7855 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7893,9 +7870,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 837 "parsing/parser.mly" +# 825 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) -# 7899 "parsing/parser.ml" +# 7876 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -7905,9 +7882,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4132 "parsing/parser.mly" +# 4304 "parsing/parser.mly" ( mk_quotedext ~loc:_sloc _1 ) -# 7911 "parsing/parser.ml" +# 7888 "parsing/parser.ml" : (Parsetree.extension)) in { @@ -7962,9 +7939,9 @@ module Tables = struct let attrs = let _1 = _1_inlined3 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 7968 "parsing/parser.ml" +# 7945 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined3_ in @@ -7974,9 +7951,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 7980 "parsing/parser.ml" +# 7957 "parsing/parser.ml" in let cid = @@ -7985,19 +7962,19 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 7991 "parsing/parser.ml" +# 7968 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3415 "parsing/parser.mly" +# 3539 "parsing/parser.mly" ( let info = symbol_info _endpos in Te.rebind cid lid ~attrs ~loc:(make_loc _sloc) ~info ) -# 8001 "parsing/parser.ml" +# 7978 "parsing/parser.ml" : (Parsetree.extension_constructor)) in { @@ -8045,9 +8022,9 @@ module Tables = struct let attrs = let _1 = _1_inlined2 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 8051 "parsing/parser.ml" +# 8028 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined2_ in @@ -8057,9 +8034,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 8063 "parsing/parser.ml" +# 8040 "parsing/parser.ml" in let cid = @@ -8067,25 +8044,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 8073 "parsing/parser.ml" +# 8050 "parsing/parser.ml" in let _startpos_cid_ = _startpos__1_ in let _1 = -# 3935 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( () ) -# 8080 "parsing/parser.ml" +# 8057 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos_cid_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3415 "parsing/parser.mly" +# 3539 "parsing/parser.mly" ( let info = symbol_info _endpos in Te.rebind cid lid ~attrs ~loc:(make_loc _sloc) ~info ) -# 8089 "parsing/parser.ml" +# 8066 "parsing/parser.ml" : (Parsetree.extension_constructor)) in { @@ -8111,24 +8088,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3636 "parsing/parser.mly" +# 3805 "parsing/parser.mly" ( Ptyp_extension ext ) -# 8117 "parsing/parser.ml" +# 8094 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_ext_, _startpos_ext_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 8126 "parsing/parser.ml" +# 8103 "parsing/parser.ml" in ( -# 3638 "parsing/parser.mly" +# 3807 "parsing/parser.mly" ( _1 ) -# 8132 "parsing/parser.ml" +# 8109 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -8177,10 +8154,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 4105 "parsing/parser.mly" +# 4277 "parsing/parser.mly" ( mark_symbol_docs _sloc; mk_attr ~loc:(make_loc _sloc) _2 _3 ) -# 8184 "parsing/parser.ml" +# 8161 "parsing/parser.ml" : (Parsetree.attribute)) in { @@ -8198,14 +8175,14 @@ module Tables = struct let _endpos = _startpos in let _v = let params = -# 2163 "parsing/parser.mly" +# 2151 "parsing/parser.mly" ( [] ) -# 8204 "parsing/parser.ml" +# 8181 "parsing/parser.ml" in ( -# 1988 "parsing/parser.mly" +# 1976 "parsing/parser.mly" ( params ) -# 8209 "parsing/parser.ml" +# 8186 "parsing/parser.ml" : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list)) in { @@ -8248,24 +8225,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 8252 "parsing/parser.ml" +# 8229 "parsing/parser.ml" in -# 1139 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( xs ) -# 8257 "parsing/parser.ml" +# 8234 "parsing/parser.ml" in -# 2165 "parsing/parser.mly" +# 2153 "parsing/parser.mly" ( params ) -# 8263 "parsing/parser.ml" +# 8240 "parsing/parser.ml" in ( -# 1988 "parsing/parser.mly" +# 1976 "parsing/parser.mly" ( params ) -# 8269 "parsing/parser.ml" +# 8246 "parsing/parser.ml" : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list)) in { @@ -8315,18 +8292,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 8319 "parsing/parser.ml" +# 8296 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 8324 "parsing/parser.ml" +# 8301 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 8330 "parsing/parser.ml" +# 8307 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -8335,22 +8312,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 8341 "parsing/parser.ml" +# 8318 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 8347 "parsing/parser.ml" +# 8324 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2784 "parsing/parser.mly" +# 2769 "parsing/parser.mly" ( let ext, attrs = _2 in match ext with | None -> Pfunction_cases (_3, make_loc _sloc, attrs) @@ -8360,7 +8337,7 @@ module Tables = struct Pfunction_body (mkexp_attrs ~loc:_sloc (mkfunction [] None cases) _2) ) -# 8364 "parsing/parser.ml" +# 8341 "parsing/parser.ml" : (Parsetree.function_body)) in { @@ -8384,9 +8361,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.function_body) = -# 2794 "parsing/parser.mly" +# 2779 "parsing/parser.mly" ( Pfunction_body _1 ) -# 8390 "parsing/parser.ml" +# 8367 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8409,9 +8386,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 2421 "parsing/parser.mly" +# 2407 "parsing/parser.mly" ( _1 ) -# 8415 "parsing/parser.ml" +# 8392 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8490,9 +8467,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 8496 "parsing/parser.ml" +# 8473 "parsing/parser.ml" in let _3 = @@ -8500,21 +8477,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 8506 "parsing/parser.ml" +# 8483 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 8512 "parsing/parser.ml" +# 8489 "parsing/parser.ml" in -# 2457 "parsing/parser.mly" +# 2444 "parsing/parser.mly" ( Pexp_letmodule(_4, _5, _7), _3 ) -# 8518 "parsing/parser.ml" +# 8495 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -8522,10 +8499,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8529 "parsing/parser.ml" +# 8506 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -8612,9 +8589,9 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 8618 "parsing/parser.ml" +# 8595 "parsing/parser.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -8623,19 +8600,19 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 8629 "parsing/parser.ml" +# 8606 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3326 "parsing/parser.mly" +# 3449 "parsing/parser.mly" ( let vars, args, res = _2 in Te.decl _1 ~vars ~args ?res ~attrs:_3 ~loc:(make_loc _sloc) ) -# 8639 "parsing/parser.ml" +# 8616 "parsing/parser.ml" in let _3 = @@ -8643,21 +8620,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 8649 "parsing/parser.ml" +# 8626 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 8655 "parsing/parser.ml" +# 8632 "parsing/parser.ml" in -# 2459 "parsing/parser.mly" +# 2446 "parsing/parser.mly" ( Pexp_letexception(_4, _6), _3 ) -# 8661 "parsing/parser.ml" +# 8638 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -8665,10 +8642,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8672 "parsing/parser.ml" +# 8649 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -8740,28 +8717,28 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 8746 "parsing/parser.ml" +# 8723 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 8752 "parsing/parser.ml" +# 8729 "parsing/parser.ml" in let _3 = -# 4016 "parsing/parser.mly" +# 4187 "parsing/parser.mly" ( Fresh ) -# 8758 "parsing/parser.ml" +# 8735 "parsing/parser.ml" in -# 2461 "parsing/parser.mly" +# 2448 "parsing/parser.mly" ( let open_loc = make_loc (_startpos__2_, _endpos__5_) in let od = Opn.mk _5 ~override:_3 ~loc:open_loc in Pexp_open(od, _7), _4 ) -# 8765 "parsing/parser.ml" +# 8742 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -8769,10 +8746,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8776 "parsing/parser.ml" +# 8753 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -8851,28 +8828,28 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 8857 "parsing/parser.ml" +# 8834 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 8863 "parsing/parser.ml" +# 8840 "parsing/parser.ml" in let _3 = -# 4017 "parsing/parser.mly" +# 4188 "parsing/parser.mly" ( Override ) -# 8869 "parsing/parser.ml" +# 8846 "parsing/parser.ml" in -# 2461 "parsing/parser.mly" +# 2448 "parsing/parser.mly" ( let open_loc = make_loc (_startpos__2_, _endpos__5_) in let od = Opn.mk _5 ~override:_3 ~loc:open_loc in Pexp_open(od, _7), _4 ) -# 8876 "parsing/parser.ml" +# 8853 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -8880,10 +8857,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8887 "parsing/parser.ml" +# 8864 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -8955,23 +8932,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 8961 "parsing/parser.ml" +# 8938 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 8967 "parsing/parser.ml" +# 8944 "parsing/parser.ml" in -# 2467 "parsing/parser.mly" +# 2454 "parsing/parser.mly" ( let body_constraint = Option.map (fun x -> Pconstraint x) _4 in mkfunction _3 body_constraint _6, _2 ) -# 8975 "parsing/parser.ml" +# 8952 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -8979,10 +8956,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8986 "parsing/parser.ml" +# 8963 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -9047,18 +9024,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 9051 "parsing/parser.ml" +# 9028 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 9056 "parsing/parser.ml" +# 9033 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 9062 "parsing/parser.ml" +# 9039 "parsing/parser.ml" in let _2 = @@ -9066,21 +9043,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 9072 "parsing/parser.ml" +# 9049 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 9078 "parsing/parser.ml" +# 9055 "parsing/parser.ml" in -# 2471 "parsing/parser.mly" +# 2458 "parsing/parser.mly" ( Pexp_match(_3, _5), _2 ) -# 9084 "parsing/parser.ml" +# 9061 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -9088,10 +9065,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9095 "parsing/parser.ml" +# 9072 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -9156,18 +9133,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 9160 "parsing/parser.ml" +# 9137 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 9165 "parsing/parser.ml" +# 9142 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 9171 "parsing/parser.ml" +# 9148 "parsing/parser.ml" in let _2 = @@ -9175,21 +9152,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 9181 "parsing/parser.ml" +# 9158 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 9187 "parsing/parser.ml" +# 9164 "parsing/parser.ml" in -# 2473 "parsing/parser.mly" +# 2460 "parsing/parser.mly" ( Pexp_try(_3, _5), _2 ) -# 9193 "parsing/parser.ml" +# 9170 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -9197,10 +9174,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9204 "parsing/parser.ml" +# 9181 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -9265,21 +9242,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 9271 "parsing/parser.ml" +# 9248 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 9277 "parsing/parser.ml" +# 9254 "parsing/parser.ml" in -# 2475 "parsing/parser.mly" +# 2462 "parsing/parser.mly" ( syntax_error() ) -# 9283 "parsing/parser.ml" +# 9260 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -9287,10 +9264,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9294 "parsing/parser.ml" +# 9271 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -9367,27 +9344,27 @@ module Tables = struct let _7 = let _1 = _1_inlined4 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 9373 "parsing/parser.ml" +# 9350 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 9378 "parsing/parser.ml" +# 9355 "parsing/parser.ml" in let _5 = let _1 = _1_inlined3 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 9386 "parsing/parser.ml" +# 9363 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 9391 "parsing/parser.ml" +# 9368 "parsing/parser.ml" in let _2 = @@ -9395,21 +9372,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 9401 "parsing/parser.ml" +# 9378 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 9407 "parsing/parser.ml" +# 9384 "parsing/parser.ml" in -# 2477 "parsing/parser.mly" +# 2464 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, Some _7), _2 ) -# 9413 "parsing/parser.ml" +# 9390 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -9417,10 +9394,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9424 "parsing/parser.ml" +# 9401 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -9523,18 +9500,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 9527 "parsing/parser.ml" +# 9504 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 9532 "parsing/parser.ml" +# 9509 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 9538 "parsing/parser.ml" +# 9515 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -9543,22 +9520,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 9549 "parsing/parser.ml" +# 9526 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 9555 "parsing/parser.ml" +# 9532 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -9571,26 +9548,26 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 9575 "parsing/parser.ml" +# 9552 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 9581 "parsing/parser.ml" +# 9558 "parsing/parser.ml" in let _5 = let _1 = _1_inlined3 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 9589 "parsing/parser.ml" +# 9566 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 9594 "parsing/parser.ml" +# 9571 "parsing/parser.ml" in let _2 = @@ -9598,21 +9575,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 9604 "parsing/parser.ml" +# 9581 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 9610 "parsing/parser.ml" +# 9587 "parsing/parser.ml" in -# 2477 "parsing/parser.mly" +# 2464 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, Some _7), _2 ) -# 9616 "parsing/parser.ml" +# 9593 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -9620,10 +9597,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9627 "parsing/parser.ml" +# 9604 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -9721,14 +9698,14 @@ module Tables = struct let _7 = let _1 = _1_inlined6 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 9727 "parsing/parser.ml" +# 9704 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 9732 "parsing/parser.ml" +# 9709 "parsing/parser.ml" in let _5 = @@ -9739,18 +9716,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 9743 "parsing/parser.ml" +# 9720 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 9748 "parsing/parser.ml" +# 9725 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 9754 "parsing/parser.ml" +# 9731 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -9759,22 +9736,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 9765 "parsing/parser.ml" +# 9742 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 9771 "parsing/parser.ml" +# 9748 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -9787,13 +9764,13 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 9791 "parsing/parser.ml" +# 9768 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 9797 "parsing/parser.ml" +# 9774 "parsing/parser.ml" in let _2 = @@ -9801,21 +9778,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 9807 "parsing/parser.ml" +# 9784 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 9813 "parsing/parser.ml" +# 9790 "parsing/parser.ml" in -# 2477 "parsing/parser.mly" +# 2464 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, Some _7), _2 ) -# 9819 "parsing/parser.ml" +# 9796 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined6_ in @@ -9823,10 +9800,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9830 "parsing/parser.ml" +# 9807 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -9950,18 +9927,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 9954 "parsing/parser.ml" +# 9931 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 9959 "parsing/parser.ml" +# 9936 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 9965 "parsing/parser.ml" +# 9942 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -9970,22 +9947,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 9976 "parsing/parser.ml" +# 9953 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 9982 "parsing/parser.ml" +# 9959 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -9998,13 +9975,13 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 10002 "parsing/parser.ml" +# 9979 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 10008 "parsing/parser.ml" +# 9985 "parsing/parser.ml" in let _5 = @@ -10015,18 +9992,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 10019 "parsing/parser.ml" +# 9996 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 10024 "parsing/parser.ml" +# 10001 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 10030 "parsing/parser.ml" +# 10007 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -10035,22 +10012,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 10041 "parsing/parser.ml" +# 10018 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 10047 "parsing/parser.ml" +# 10024 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -10063,13 +10040,13 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 10067 "parsing/parser.ml" +# 10044 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 10073 "parsing/parser.ml" +# 10050 "parsing/parser.ml" in let _2 = @@ -10077,21 +10054,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 10083 "parsing/parser.ml" +# 10060 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 10089 "parsing/parser.ml" +# 10066 "parsing/parser.ml" in -# 2477 "parsing/parser.mly" +# 2464 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, Some _7), _2 ) -# 10095 "parsing/parser.ml" +# 10072 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_inlined1_ in @@ -10099,10 +10076,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10106 "parsing/parser.ml" +# 10083 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -10165,14 +10142,14 @@ module Tables = struct let _5 = let _1 = _1_inlined3 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 10171 "parsing/parser.ml" +# 10148 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 10176 "parsing/parser.ml" +# 10153 "parsing/parser.ml" in let _2 = @@ -10180,21 +10157,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 10186 "parsing/parser.ml" +# 10163 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 10192 "parsing/parser.ml" +# 10169 "parsing/parser.ml" in -# 2479 "parsing/parser.mly" +# 2466 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, None), _2 ) -# 10198 "parsing/parser.ml" +# 10175 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -10202,10 +10179,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10209 "parsing/parser.ml" +# 10186 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -10294,18 +10271,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 10298 "parsing/parser.ml" +# 10275 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 10303 "parsing/parser.ml" +# 10280 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 10309 "parsing/parser.ml" +# 10286 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -10314,22 +10291,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 10320 "parsing/parser.ml" +# 10297 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 10326 "parsing/parser.ml" +# 10303 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -10342,13 +10319,13 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 10346 "parsing/parser.ml" +# 10323 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 10352 "parsing/parser.ml" +# 10329 "parsing/parser.ml" in let _2 = @@ -10356,21 +10333,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 10362 "parsing/parser.ml" +# 10339 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 10368 "parsing/parser.ml" +# 10345 "parsing/parser.ml" in -# 2479 "parsing/parser.mly" +# 2466 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, None), _2 ) -# 10374 "parsing/parser.ml" +# 10351 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -10378,10 +10355,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10385 "parsing/parser.ml" +# 10362 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -10449,30 +10426,30 @@ module Tables = struct let _v = let _1 = let _4 = -# 2492 "parsing/parser.mly" +# 2479 "parsing/parser.mly" ( e ) -# 10455 "parsing/parser.ml" +# 10432 "parsing/parser.ml" in let _2 = let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 10464 "parsing/parser.ml" +# 10441 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 10470 "parsing/parser.ml" +# 10447 "parsing/parser.ml" in -# 2481 "parsing/parser.mly" +# 2468 "parsing/parser.mly" ( Pexp_while(_3, _4), _2 ) -# 10476 "parsing/parser.ml" +# 10453 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_inlined1_ in @@ -10480,10 +10457,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10487 "parsing/parser.ml" +# 10464 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -10555,9 +10532,9 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2494 "parsing/parser.mly" +# 2481 "parsing/parser.mly" ( unclosed "do" _loc__1_ "done" _loc__2_ ) -# 10561 "parsing/parser.ml" +# 10538 "parsing/parser.ml" in let _2 = @@ -10565,21 +10542,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 10571 "parsing/parser.ml" +# 10548 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 10577 "parsing/parser.ml" +# 10554 "parsing/parser.ml" in -# 2481 "parsing/parser.mly" +# 2468 "parsing/parser.mly" ( Pexp_while(_3, _4), _2 ) -# 10583 "parsing/parser.ml" +# 10560 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_inlined1_ in @@ -10587,10 +10564,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10594 "parsing/parser.ml" +# 10571 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -10686,30 +10663,30 @@ module Tables = struct let _v = let _1 = let _8 = -# 2492 "parsing/parser.mly" +# 2479 "parsing/parser.mly" ( e ) -# 10692 "parsing/parser.ml" +# 10669 "parsing/parser.ml" in let _2 = let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 10701 "parsing/parser.ml" +# 10678 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 10707 "parsing/parser.ml" +# 10684 "parsing/parser.ml" in -# 2484 "parsing/parser.mly" +# 2471 "parsing/parser.mly" ( Pexp_for(_3, _5, _7, _6, _8), _2 ) -# 10713 "parsing/parser.ml" +# 10690 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_inlined1_ in @@ -10717,10 +10694,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10724 "parsing/parser.ml" +# 10701 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -10820,9 +10797,9 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2494 "parsing/parser.mly" +# 2481 "parsing/parser.mly" ( unclosed "do" _loc__1_ "done" _loc__2_ ) -# 10826 "parsing/parser.ml" +# 10803 "parsing/parser.ml" in let _2 = @@ -10830,21 +10807,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 10836 "parsing/parser.ml" +# 10813 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 10842 "parsing/parser.ml" +# 10819 "parsing/parser.ml" in -# 2484 "parsing/parser.mly" +# 2471 "parsing/parser.mly" ( Pexp_for(_3, _5, _7, _6, _8), _2 ) -# 10848 "parsing/parser.ml" +# 10825 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_inlined1_ in @@ -10852,10 +10829,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10859 "parsing/parser.ml" +# 10836 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -10906,21 +10883,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 10912 "parsing/parser.ml" +# 10889 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 10918 "parsing/parser.ml" +# 10895 "parsing/parser.ml" in -# 2486 "parsing/parser.mly" +# 2473 "parsing/parser.mly" ( Pexp_assert _3, _2 ) -# 10924 "parsing/parser.ml" +# 10901 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -10928,10 +10905,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10935 "parsing/parser.ml" +# 10912 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -10982,21 +10959,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 10988 "parsing/parser.ml" +# 10965 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 10994 "parsing/parser.ml" +# 10971 "parsing/parser.ml" in -# 2488 "parsing/parser.mly" +# 2475 "parsing/parser.mly" ( Pexp_lazy _3, _2 ) -# 11000 "parsing/parser.ml" +# 10977 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -11004,10 +10981,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2423 "parsing/parser.mly" +# 2409 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 11011 "parsing/parser.ml" +# 10988 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -11044,18 +11021,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 11048 "parsing/parser.ml" +# 11025 "parsing/parser.ml" in -# 1086 "parsing/parser.mly" +# 1074 "parsing/parser.mly" ( xs ) -# 11053 "parsing/parser.ml" +# 11030 "parsing/parser.ml" in -# 2498 "parsing/parser.mly" +# 2485 "parsing/parser.mly" ( Pexp_apply(_1, _2) ) -# 11059 "parsing/parser.ml" +# 11036 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -11063,15 +11040,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11069 "parsing/parser.ml" +# 11046 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 11075 "parsing/parser.ml" +# 11052 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -11090,7 +11067,7 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let xs : (Parsetree.expression list) = Obj.magic xs in + let xs : ((string option * Parsetree.expression) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_xs_ in let _endpos = _endpos_xs_ in @@ -11098,28 +11075,21 @@ module Tables = struct let _1 = let _1 = let _1 = - let es = - let xs = + let xs = # 264 "" ( List.rev xs ) -# 11106 "parsing/parser.ml" - in - -# 1167 "parsing/parser.mly" - ( xs ) -# 11111 "parsing/parser.ml" - - in +# 11082 "parsing/parser.ml" + in -# 2833 "parsing/parser.mly" - ( es ) -# 11117 "parsing/parser.ml" +# 2893 "parsing/parser.mly" + ( xs ) +# 11087 "parsing/parser.ml" in -# 2500 "parsing/parser.mly" +# 2487 "parsing/parser.mly" ( Pexp_tuple(_1) ) -# 11123 "parsing/parser.ml" +# 11093 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_xs_) in @@ -11127,15 +11097,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11133 "parsing/parser.ml" +# 11103 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 11139 "parsing/parser.ml" +# 11109 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -11173,15 +11143,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 11179 "parsing/parser.ml" +# 11149 "parsing/parser.ml" in -# 2502 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( Pexp_construct(_1, Some _2) ) -# 11185 "parsing/parser.ml" +# 11155 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -11189,15 +11159,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11195 "parsing/parser.ml" +# 11165 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 11201 "parsing/parser.ml" +# 11171 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -11230,24 +11200,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 2504 "parsing/parser.mly" +# 2491 "parsing/parser.mly" ( Pexp_variant(_1, Some _2) ) -# 11236 "parsing/parser.ml" +# 11206 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11245 "parsing/parser.ml" +# 11215 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 11251 "parsing/parser.ml" +# 11221 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -11280,9 +11250,9 @@ module Tables = struct } = _menhir_stack in let _1 : (Parsetree.expression) = Obj.magic _1 in let op : ( -# 773 "parsing/parser.mly" +# 761 "parsing/parser.mly" (string) -# 11286 "parsing/parser.ml" +# 11256 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -11293,36 +11263,36 @@ module Tables = struct let _1 = let e2 = let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 11299 "parsing/parser.ml" +# 11269 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 11304 "parsing/parser.ml" +# 11274 "parsing/parser.ml" in let op = let _1 = -# 3822 "parsing/parser.mly" +# 3993 "parsing/parser.mly" ( op ) -# 11311 "parsing/parser.ml" +# 11281 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11320 "parsing/parser.ml" +# 11290 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11326 "parsing/parser.ml" +# 11296 "parsing/parser.ml" in let _startpos__1_ = _startpos_e1_ in @@ -11330,15 +11300,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11336 "parsing/parser.ml" +# 11306 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 11342 "parsing/parser.ml" +# 11312 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -11392,9 +11362,9 @@ module Tables = struct let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let op : ( -# 773 "parsing/parser.mly" +# 761 "parsing/parser.mly" (string) -# 11398 "parsing/parser.ml" +# 11368 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -11410,18 +11380,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 11414 "parsing/parser.ml" +# 11384 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 11419 "parsing/parser.ml" +# 11389 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 11425 "parsing/parser.ml" +# 11395 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -11430,22 +11400,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 11436 "parsing/parser.ml" +# 11406 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 11442 "parsing/parser.ml" +# 11412 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -11458,35 +11428,35 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 11462 "parsing/parser.ml" +# 11432 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 11468 "parsing/parser.ml" +# 11438 "parsing/parser.ml" in let op = let _1 = -# 3822 "parsing/parser.mly" +# 3993 "parsing/parser.mly" ( op ) -# 11475 "parsing/parser.ml" +# 11445 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11484 "parsing/parser.ml" +# 11454 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11490 "parsing/parser.ml" +# 11460 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -11494,15 +11464,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11500 "parsing/parser.ml" +# 11470 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 11506 "parsing/parser.ml" +# 11476 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -11535,9 +11505,9 @@ module Tables = struct } = _menhir_stack in let _1 : (Parsetree.expression) = Obj.magic _1 in let op : ( -# 774 "parsing/parser.mly" +# 762 "parsing/parser.mly" (string) -# 11541 "parsing/parser.ml" +# 11511 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -11548,36 +11518,36 @@ module Tables = struct let _1 = let e2 = let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 11554 "parsing/parser.ml" +# 11524 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 11559 "parsing/parser.ml" +# 11529 "parsing/parser.ml" in let op = let _1 = -# 3823 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( op ) -# 11566 "parsing/parser.ml" +# 11536 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11575 "parsing/parser.ml" +# 11545 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11581 "parsing/parser.ml" +# 11551 "parsing/parser.ml" in let _startpos__1_ = _startpos_e1_ in @@ -11585,15 +11555,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11591 "parsing/parser.ml" +# 11561 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 11597 "parsing/parser.ml" +# 11567 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -11647,9 +11617,9 @@ module Tables = struct let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let op : ( -# 774 "parsing/parser.mly" +# 762 "parsing/parser.mly" (string) -# 11653 "parsing/parser.ml" +# 11623 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -11665,18 +11635,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 11669 "parsing/parser.ml" +# 11639 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 11674 "parsing/parser.ml" +# 11644 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 11680 "parsing/parser.ml" +# 11650 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -11685,22 +11655,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 11691 "parsing/parser.ml" +# 11661 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 11697 "parsing/parser.ml" +# 11667 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -11713,35 +11683,35 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 11717 "parsing/parser.ml" +# 11687 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 11723 "parsing/parser.ml" +# 11693 "parsing/parser.ml" in let op = let _1 = -# 3823 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( op ) -# 11730 "parsing/parser.ml" +# 11700 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11739 "parsing/parser.ml" +# 11709 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11745 "parsing/parser.ml" +# 11715 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -11749,15 +11719,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11755 "parsing/parser.ml" +# 11725 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 11761 "parsing/parser.ml" +# 11731 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -11790,9 +11760,9 @@ module Tables = struct } = _menhir_stack in let _1 : (Parsetree.expression) = Obj.magic _1 in let op : ( -# 775 "parsing/parser.mly" +# 763 "parsing/parser.mly" (string) -# 11796 "parsing/parser.ml" +# 11766 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -11803,36 +11773,36 @@ module Tables = struct let _1 = let e2 = let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 11809 "parsing/parser.ml" +# 11779 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 11814 "parsing/parser.ml" +# 11784 "parsing/parser.ml" in let op = let _1 = -# 3824 "parsing/parser.mly" +# 3995 "parsing/parser.mly" ( op ) -# 11821 "parsing/parser.ml" +# 11791 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11830 "parsing/parser.ml" +# 11800 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11836 "parsing/parser.ml" +# 11806 "parsing/parser.ml" in let _startpos__1_ = _startpos_e1_ in @@ -11840,15 +11810,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11846 "parsing/parser.ml" +# 11816 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 11852 "parsing/parser.ml" +# 11822 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -11902,9 +11872,9 @@ module Tables = struct let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let op : ( -# 775 "parsing/parser.mly" +# 763 "parsing/parser.mly" (string) -# 11908 "parsing/parser.ml" +# 11878 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -11920,18 +11890,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 11924 "parsing/parser.ml" +# 11894 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 11929 "parsing/parser.ml" +# 11899 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 11935 "parsing/parser.ml" +# 11905 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -11940,22 +11910,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 11946 "parsing/parser.ml" +# 11916 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 11952 "parsing/parser.ml" +# 11922 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -11968,35 +11938,35 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 11972 "parsing/parser.ml" +# 11942 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 11978 "parsing/parser.ml" +# 11948 "parsing/parser.ml" in let op = let _1 = -# 3824 "parsing/parser.mly" +# 3995 "parsing/parser.mly" ( op ) -# 11985 "parsing/parser.ml" +# 11955 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11994 "parsing/parser.ml" +# 11964 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 12000 "parsing/parser.ml" +# 11970 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -12004,15 +11974,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 12010 "parsing/parser.ml" +# 11980 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 12016 "parsing/parser.ml" +# 11986 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -12045,9 +12015,9 @@ module Tables = struct } = _menhir_stack in let _1 : (Parsetree.expression) = Obj.magic _1 in let op : ( -# 776 "parsing/parser.mly" +# 764 "parsing/parser.mly" (string) -# 12051 "parsing/parser.ml" +# 12021 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -12058,36 +12028,36 @@ module Tables = struct let _1 = let e2 = let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 12064 "parsing/parser.ml" +# 12034 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 12069 "parsing/parser.ml" +# 12039 "parsing/parser.ml" in let op = let _1 = -# 3825 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( op ) -# 12076 "parsing/parser.ml" +# 12046 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 12085 "parsing/parser.ml" +# 12055 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 12091 "parsing/parser.ml" +# 12061 "parsing/parser.ml" in let _startpos__1_ = _startpos_e1_ in @@ -12095,15 +12065,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 12101 "parsing/parser.ml" +# 12071 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 12107 "parsing/parser.ml" +# 12077 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -12157,9 +12127,9 @@ module Tables = struct let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let op : ( -# 776 "parsing/parser.mly" +# 764 "parsing/parser.mly" (string) -# 12163 "parsing/parser.ml" +# 12133 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -12175,18 +12145,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 12179 "parsing/parser.ml" +# 12149 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 12184 "parsing/parser.ml" +# 12154 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 12190 "parsing/parser.ml" +# 12160 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -12195,22 +12165,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 12201 "parsing/parser.ml" +# 12171 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 12207 "parsing/parser.ml" +# 12177 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -12223,35 +12193,35 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 12227 "parsing/parser.ml" +# 12197 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 12233 "parsing/parser.ml" +# 12203 "parsing/parser.ml" in let op = let _1 = -# 3825 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( op ) -# 12240 "parsing/parser.ml" +# 12210 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 12249 "parsing/parser.ml" +# 12219 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 12255 "parsing/parser.ml" +# 12225 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -12259,15 +12229,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 12265 "parsing/parser.ml" +# 12235 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 12271 "parsing/parser.ml" +# 12241 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -12300,9 +12270,9 @@ module Tables = struct } = _menhir_stack in let _1 : (Parsetree.expression) = Obj.magic _1 in let op : ( -# 777 "parsing/parser.mly" +# 765 "parsing/parser.mly" (string) -# 12306 "parsing/parser.ml" +# 12276 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -12313,36 +12283,36 @@ module Tables = struct let _1 = let e2 = let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 12319 "parsing/parser.ml" +# 12289 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 12324 "parsing/parser.ml" +# 12294 "parsing/parser.ml" in let op = let _1 = -# 3826 "parsing/parser.mly" +# 3997 "parsing/parser.mly" ( op ) -# 12331 "parsing/parser.ml" +# 12301 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 12340 "parsing/parser.ml" +# 12310 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 12346 "parsing/parser.ml" +# 12316 "parsing/parser.ml" in let _startpos__1_ = _startpos_e1_ in @@ -12350,15 +12320,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 12356 "parsing/parser.ml" +# 12326 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 12362 "parsing/parser.ml" +# 12332 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -12412,9 +12382,9 @@ module Tables = struct let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let op : ( -# 777 "parsing/parser.mly" +# 765 "parsing/parser.mly" (string) -# 12418 "parsing/parser.ml" +# 12388 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -12430,18 +12400,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 12434 "parsing/parser.ml" +# 12404 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 12439 "parsing/parser.ml" +# 12409 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 12445 "parsing/parser.ml" +# 12415 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -12450,22 +12420,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 12456 "parsing/parser.ml" +# 12426 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 12462 "parsing/parser.ml" +# 12432 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -12478,35 +12448,35 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 12482 "parsing/parser.ml" +# 12452 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 12488 "parsing/parser.ml" +# 12458 "parsing/parser.ml" in let op = let _1 = -# 3826 "parsing/parser.mly" +# 3997 "parsing/parser.mly" ( op ) -# 12495 "parsing/parser.ml" +# 12465 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 12504 "parsing/parser.ml" +# 12474 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 12510 "parsing/parser.ml" +# 12480 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -12514,15 +12484,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 12520 "parsing/parser.ml" +# 12490 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 12526 "parsing/parser.ml" +# 12496 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -12565,35 +12535,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 12571 "parsing/parser.ml" +# 12541 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 12576 "parsing/parser.ml" +# 12546 "parsing/parser.ml" in let op = let _1 = -# 3827 "parsing/parser.mly" +# 3998 "parsing/parser.mly" ("+") -# 12583 "parsing/parser.ml" +# 12553 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 12591 "parsing/parser.ml" +# 12561 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 12597 "parsing/parser.ml" +# 12567 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -12601,15 +12571,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 12607 "parsing/parser.ml" +# 12577 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 12613 "parsing/parser.ml" +# 12583 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -12678,18 +12648,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 12682 "parsing/parser.ml" +# 12652 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 12687 "parsing/parser.ml" +# 12657 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 12693 "parsing/parser.ml" +# 12663 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -12698,22 +12668,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 12704 "parsing/parser.ml" +# 12674 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 12710 "parsing/parser.ml" +# 12680 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -12726,34 +12696,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 12730 "parsing/parser.ml" +# 12700 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 12736 "parsing/parser.ml" +# 12706 "parsing/parser.ml" in let op = let _1 = -# 3827 "parsing/parser.mly" +# 3998 "parsing/parser.mly" ("+") -# 12743 "parsing/parser.ml" +# 12713 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 12751 "parsing/parser.ml" +# 12721 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 12757 "parsing/parser.ml" +# 12727 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -12761,15 +12731,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 12767 "parsing/parser.ml" +# 12737 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 12773 "parsing/parser.ml" +# 12743 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -12812,35 +12782,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 12818 "parsing/parser.ml" +# 12788 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 12823 "parsing/parser.ml" +# 12793 "parsing/parser.ml" in let op = let _1 = -# 3828 "parsing/parser.mly" +# 3999 "parsing/parser.mly" ("+.") -# 12830 "parsing/parser.ml" +# 12800 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 12838 "parsing/parser.ml" +# 12808 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 12844 "parsing/parser.ml" +# 12814 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -12848,15 +12818,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 12854 "parsing/parser.ml" +# 12824 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 12860 "parsing/parser.ml" +# 12830 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -12925,18 +12895,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 12929 "parsing/parser.ml" +# 12899 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 12934 "parsing/parser.ml" +# 12904 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 12940 "parsing/parser.ml" +# 12910 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -12945,22 +12915,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 12951 "parsing/parser.ml" +# 12921 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 12957 "parsing/parser.ml" +# 12927 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -12973,34 +12943,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 12977 "parsing/parser.ml" +# 12947 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 12983 "parsing/parser.ml" +# 12953 "parsing/parser.ml" in let op = let _1 = -# 3828 "parsing/parser.mly" +# 3999 "parsing/parser.mly" ("+.") -# 12990 "parsing/parser.ml" +# 12960 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 12998 "parsing/parser.ml" +# 12968 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 13004 "parsing/parser.ml" +# 12974 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -13008,15 +12978,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 13014 "parsing/parser.ml" +# 12984 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 13020 "parsing/parser.ml" +# 12990 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -13059,35 +13029,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 13065 "parsing/parser.ml" +# 13035 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 13070 "parsing/parser.ml" +# 13040 "parsing/parser.ml" in let op = let _1 = -# 3829 "parsing/parser.mly" +# 4000 "parsing/parser.mly" ("+=") -# 13077 "parsing/parser.ml" +# 13047 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 13085 "parsing/parser.ml" +# 13055 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 13091 "parsing/parser.ml" +# 13061 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -13095,15 +13065,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 13101 "parsing/parser.ml" +# 13071 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 13107 "parsing/parser.ml" +# 13077 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -13172,18 +13142,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 13176 "parsing/parser.ml" +# 13146 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 13181 "parsing/parser.ml" +# 13151 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 13187 "parsing/parser.ml" +# 13157 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -13192,22 +13162,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 13198 "parsing/parser.ml" +# 13168 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 13204 "parsing/parser.ml" +# 13174 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -13220,34 +13190,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 13224 "parsing/parser.ml" +# 13194 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 13230 "parsing/parser.ml" +# 13200 "parsing/parser.ml" in let op = let _1 = -# 3829 "parsing/parser.mly" +# 4000 "parsing/parser.mly" ("+=") -# 13237 "parsing/parser.ml" +# 13207 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 13245 "parsing/parser.ml" +# 13215 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 13251 "parsing/parser.ml" +# 13221 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -13255,15 +13225,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 13261 "parsing/parser.ml" +# 13231 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 13267 "parsing/parser.ml" +# 13237 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -13306,35 +13276,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 13312 "parsing/parser.ml" +# 13282 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 13317 "parsing/parser.ml" +# 13287 "parsing/parser.ml" in let op = let _1 = -# 3830 "parsing/parser.mly" +# 4001 "parsing/parser.mly" ("-") -# 13324 "parsing/parser.ml" +# 13294 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 13332 "parsing/parser.ml" +# 13302 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 13338 "parsing/parser.ml" +# 13308 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -13342,15 +13312,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 13348 "parsing/parser.ml" +# 13318 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 13354 "parsing/parser.ml" +# 13324 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -13419,18 +13389,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 13423 "parsing/parser.ml" +# 13393 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 13428 "parsing/parser.ml" +# 13398 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 13434 "parsing/parser.ml" +# 13404 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -13439,22 +13409,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 13445 "parsing/parser.ml" +# 13415 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 13451 "parsing/parser.ml" +# 13421 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -13467,34 +13437,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 13471 "parsing/parser.ml" +# 13441 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 13477 "parsing/parser.ml" +# 13447 "parsing/parser.ml" in let op = let _1 = -# 3830 "parsing/parser.mly" +# 4001 "parsing/parser.mly" ("-") -# 13484 "parsing/parser.ml" +# 13454 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 13492 "parsing/parser.ml" +# 13462 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 13498 "parsing/parser.ml" +# 13468 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -13502,15 +13472,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 13508 "parsing/parser.ml" +# 13478 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 13514 "parsing/parser.ml" +# 13484 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -13553,35 +13523,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 13559 "parsing/parser.ml" +# 13529 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 13564 "parsing/parser.ml" +# 13534 "parsing/parser.ml" in let op = let _1 = -# 3831 "parsing/parser.mly" +# 4002 "parsing/parser.mly" ("-.") -# 13571 "parsing/parser.ml" +# 13541 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 13579 "parsing/parser.ml" +# 13549 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 13585 "parsing/parser.ml" +# 13555 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -13589,15 +13559,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 13595 "parsing/parser.ml" +# 13565 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 13601 "parsing/parser.ml" +# 13571 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -13666,18 +13636,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 13670 "parsing/parser.ml" +# 13640 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 13675 "parsing/parser.ml" +# 13645 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 13681 "parsing/parser.ml" +# 13651 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -13686,22 +13656,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 13692 "parsing/parser.ml" +# 13662 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 13698 "parsing/parser.ml" +# 13668 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -13714,34 +13684,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 13718 "parsing/parser.ml" +# 13688 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 13724 "parsing/parser.ml" +# 13694 "parsing/parser.ml" in let op = let _1 = -# 3831 "parsing/parser.mly" +# 4002 "parsing/parser.mly" ("-.") -# 13731 "parsing/parser.ml" +# 13701 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 13739 "parsing/parser.ml" +# 13709 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 13745 "parsing/parser.ml" +# 13715 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -13749,15 +13719,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 13755 "parsing/parser.ml" +# 13725 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 13761 "parsing/parser.ml" +# 13731 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -13800,35 +13770,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 13806 "parsing/parser.ml" +# 13776 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 13811 "parsing/parser.ml" +# 13781 "parsing/parser.ml" in let op = let _1 = -# 3832 "parsing/parser.mly" +# 4003 "parsing/parser.mly" ("*") -# 13818 "parsing/parser.ml" +# 13788 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 13826 "parsing/parser.ml" +# 13796 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 13832 "parsing/parser.ml" +# 13802 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -13836,15 +13806,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 13842 "parsing/parser.ml" +# 13812 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 13848 "parsing/parser.ml" +# 13818 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -13913,18 +13883,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 13917 "parsing/parser.ml" +# 13887 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 13922 "parsing/parser.ml" +# 13892 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 13928 "parsing/parser.ml" +# 13898 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -13933,22 +13903,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 13939 "parsing/parser.ml" +# 13909 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 13945 "parsing/parser.ml" +# 13915 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -13961,34 +13931,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 13965 "parsing/parser.ml" +# 13935 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 13971 "parsing/parser.ml" +# 13941 "parsing/parser.ml" in let op = let _1 = -# 3832 "parsing/parser.mly" +# 4003 "parsing/parser.mly" ("*") -# 13978 "parsing/parser.ml" +# 13948 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 13986 "parsing/parser.ml" +# 13956 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 13992 "parsing/parser.ml" +# 13962 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -13996,15 +13966,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 14002 "parsing/parser.ml" +# 13972 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 14008 "parsing/parser.ml" +# 13978 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -14047,35 +14017,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 14053 "parsing/parser.ml" +# 14023 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 14058 "parsing/parser.ml" +# 14028 "parsing/parser.ml" in let op = let _1 = -# 3833 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ("%") -# 14065 "parsing/parser.ml" +# 14035 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 14073 "parsing/parser.ml" +# 14043 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 14079 "parsing/parser.ml" +# 14049 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -14083,15 +14053,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 14089 "parsing/parser.ml" +# 14059 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 14095 "parsing/parser.ml" +# 14065 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -14160,18 +14130,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 14164 "parsing/parser.ml" +# 14134 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 14169 "parsing/parser.ml" +# 14139 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 14175 "parsing/parser.ml" +# 14145 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -14180,22 +14150,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 14186 "parsing/parser.ml" +# 14156 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 14192 "parsing/parser.ml" +# 14162 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -14208,34 +14178,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 14212 "parsing/parser.ml" +# 14182 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 14218 "parsing/parser.ml" +# 14188 "parsing/parser.ml" in let op = let _1 = -# 3833 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ("%") -# 14225 "parsing/parser.ml" +# 14195 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 14233 "parsing/parser.ml" +# 14203 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 14239 "parsing/parser.ml" +# 14209 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -14243,15 +14213,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 14249 "parsing/parser.ml" +# 14219 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 14255 "parsing/parser.ml" +# 14225 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -14294,35 +14264,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 14300 "parsing/parser.ml" +# 14270 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 14305 "parsing/parser.ml" +# 14275 "parsing/parser.ml" in let op = let _1 = -# 3834 "parsing/parser.mly" +# 4005 "parsing/parser.mly" ("=") -# 14312 "parsing/parser.ml" +# 14282 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 14320 "parsing/parser.ml" +# 14290 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 14326 "parsing/parser.ml" +# 14296 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -14330,15 +14300,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 14336 "parsing/parser.ml" +# 14306 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 14342 "parsing/parser.ml" +# 14312 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -14407,18 +14377,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 14411 "parsing/parser.ml" +# 14381 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 14416 "parsing/parser.ml" +# 14386 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 14422 "parsing/parser.ml" +# 14392 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -14427,22 +14397,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 14433 "parsing/parser.ml" +# 14403 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 14439 "parsing/parser.ml" +# 14409 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -14455,34 +14425,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 14459 "parsing/parser.ml" +# 14429 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 14465 "parsing/parser.ml" +# 14435 "parsing/parser.ml" in let op = let _1 = -# 3834 "parsing/parser.mly" +# 4005 "parsing/parser.mly" ("=") -# 14472 "parsing/parser.ml" +# 14442 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 14480 "parsing/parser.ml" +# 14450 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 14486 "parsing/parser.ml" +# 14456 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -14490,15 +14460,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 14496 "parsing/parser.ml" +# 14466 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 14502 "parsing/parser.ml" +# 14472 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -14541,35 +14511,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 14547 "parsing/parser.ml" +# 14517 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 14552 "parsing/parser.ml" +# 14522 "parsing/parser.ml" in let op = let _1 = -# 3835 "parsing/parser.mly" +# 4006 "parsing/parser.mly" ("<") -# 14559 "parsing/parser.ml" +# 14529 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 14567 "parsing/parser.ml" +# 14537 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 14573 "parsing/parser.ml" +# 14543 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -14577,15 +14547,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 14583 "parsing/parser.ml" +# 14553 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 14589 "parsing/parser.ml" +# 14559 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -14654,18 +14624,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 14658 "parsing/parser.ml" +# 14628 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 14663 "parsing/parser.ml" +# 14633 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 14669 "parsing/parser.ml" +# 14639 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -14674,22 +14644,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 14680 "parsing/parser.ml" +# 14650 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 14686 "parsing/parser.ml" +# 14656 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -14702,34 +14672,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 14706 "parsing/parser.ml" +# 14676 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 14712 "parsing/parser.ml" +# 14682 "parsing/parser.ml" in let op = let _1 = -# 3835 "parsing/parser.mly" +# 4006 "parsing/parser.mly" ("<") -# 14719 "parsing/parser.ml" +# 14689 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 14727 "parsing/parser.ml" +# 14697 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 14733 "parsing/parser.ml" +# 14703 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -14737,15 +14707,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 14743 "parsing/parser.ml" +# 14713 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 14749 "parsing/parser.ml" +# 14719 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -14788,35 +14758,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 14794 "parsing/parser.ml" +# 14764 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 14799 "parsing/parser.ml" +# 14769 "parsing/parser.ml" in let op = let _1 = -# 3836 "parsing/parser.mly" +# 4007 "parsing/parser.mly" (">") -# 14806 "parsing/parser.ml" +# 14776 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 14814 "parsing/parser.ml" +# 14784 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 14820 "parsing/parser.ml" +# 14790 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -14824,15 +14794,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 14830 "parsing/parser.ml" +# 14800 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 14836 "parsing/parser.ml" +# 14806 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -14901,18 +14871,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 14905 "parsing/parser.ml" +# 14875 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 14910 "parsing/parser.ml" +# 14880 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 14916 "parsing/parser.ml" +# 14886 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -14921,22 +14891,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 14927 "parsing/parser.ml" +# 14897 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 14933 "parsing/parser.ml" +# 14903 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -14949,34 +14919,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 14953 "parsing/parser.ml" +# 14923 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 14959 "parsing/parser.ml" +# 14929 "parsing/parser.ml" in let op = let _1 = -# 3836 "parsing/parser.mly" +# 4007 "parsing/parser.mly" (">") -# 14966 "parsing/parser.ml" +# 14936 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 14974 "parsing/parser.ml" +# 14944 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 14980 "parsing/parser.ml" +# 14950 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -14984,15 +14954,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 14990 "parsing/parser.ml" +# 14960 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 14996 "parsing/parser.ml" +# 14966 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -15035,35 +15005,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 15041 "parsing/parser.ml" +# 15011 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 15046 "parsing/parser.ml" +# 15016 "parsing/parser.ml" in let op = let _1 = -# 3837 "parsing/parser.mly" +# 4008 "parsing/parser.mly" ("or") -# 15053 "parsing/parser.ml" +# 15023 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 15061 "parsing/parser.ml" +# 15031 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 15067 "parsing/parser.ml" +# 15037 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -15071,15 +15041,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 15077 "parsing/parser.ml" +# 15047 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 15083 "parsing/parser.ml" +# 15053 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -15148,18 +15118,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 15152 "parsing/parser.ml" +# 15122 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 15157 "parsing/parser.ml" +# 15127 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 15163 "parsing/parser.ml" +# 15133 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -15168,22 +15138,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 15174 "parsing/parser.ml" +# 15144 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 15180 "parsing/parser.ml" +# 15150 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -15196,34 +15166,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 15200 "parsing/parser.ml" +# 15170 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 15206 "parsing/parser.ml" +# 15176 "parsing/parser.ml" in let op = let _1 = -# 3837 "parsing/parser.mly" +# 4008 "parsing/parser.mly" ("or") -# 15213 "parsing/parser.ml" +# 15183 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 15221 "parsing/parser.ml" +# 15191 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 15227 "parsing/parser.ml" +# 15197 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -15231,15 +15201,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 15237 "parsing/parser.ml" +# 15207 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 15243 "parsing/parser.ml" +# 15213 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -15282,35 +15252,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 15288 "parsing/parser.ml" +# 15258 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 15293 "parsing/parser.ml" +# 15263 "parsing/parser.ml" in let op = let _1 = -# 3838 "parsing/parser.mly" +# 4009 "parsing/parser.mly" ("||") -# 15300 "parsing/parser.ml" +# 15270 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 15308 "parsing/parser.ml" +# 15278 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 15314 "parsing/parser.ml" +# 15284 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -15318,15 +15288,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 15324 "parsing/parser.ml" +# 15294 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 15330 "parsing/parser.ml" +# 15300 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -15395,18 +15365,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 15399 "parsing/parser.ml" +# 15369 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 15404 "parsing/parser.ml" +# 15374 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 15410 "parsing/parser.ml" +# 15380 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -15415,22 +15385,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 15421 "parsing/parser.ml" +# 15391 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 15427 "parsing/parser.ml" +# 15397 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -15443,34 +15413,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 15447 "parsing/parser.ml" +# 15417 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 15453 "parsing/parser.ml" +# 15423 "parsing/parser.ml" in let op = let _1 = -# 3838 "parsing/parser.mly" +# 4009 "parsing/parser.mly" ("||") -# 15460 "parsing/parser.ml" +# 15430 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 15468 "parsing/parser.ml" +# 15438 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 15474 "parsing/parser.ml" +# 15444 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -15478,15 +15448,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 15484 "parsing/parser.ml" +# 15454 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 15490 "parsing/parser.ml" +# 15460 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -15529,35 +15499,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 15535 "parsing/parser.ml" +# 15505 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 15540 "parsing/parser.ml" +# 15510 "parsing/parser.ml" in let op = let _1 = -# 3839 "parsing/parser.mly" +# 4010 "parsing/parser.mly" ("&") -# 15547 "parsing/parser.ml" +# 15517 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 15555 "parsing/parser.ml" +# 15525 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 15561 "parsing/parser.ml" +# 15531 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -15565,15 +15535,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 15571 "parsing/parser.ml" +# 15541 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 15577 "parsing/parser.ml" +# 15547 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -15642,18 +15612,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 15646 "parsing/parser.ml" +# 15616 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 15651 "parsing/parser.ml" +# 15621 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 15657 "parsing/parser.ml" +# 15627 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -15662,22 +15632,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 15668 "parsing/parser.ml" +# 15638 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 15674 "parsing/parser.ml" +# 15644 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -15690,34 +15660,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 15694 "parsing/parser.ml" +# 15664 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 15700 "parsing/parser.ml" +# 15670 "parsing/parser.ml" in let op = let _1 = -# 3839 "parsing/parser.mly" +# 4010 "parsing/parser.mly" ("&") -# 15707 "parsing/parser.ml" +# 15677 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 15715 "parsing/parser.ml" +# 15685 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 15721 "parsing/parser.ml" +# 15691 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -15725,15 +15695,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 15731 "parsing/parser.ml" +# 15701 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 15737 "parsing/parser.ml" +# 15707 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -15776,35 +15746,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 15782 "parsing/parser.ml" +# 15752 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 15787 "parsing/parser.ml" +# 15757 "parsing/parser.ml" in let op = let _1 = -# 3840 "parsing/parser.mly" +# 4011 "parsing/parser.mly" ("&&") -# 15794 "parsing/parser.ml" +# 15764 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 15802 "parsing/parser.ml" +# 15772 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 15808 "parsing/parser.ml" +# 15778 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -15812,15 +15782,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 15818 "parsing/parser.ml" +# 15788 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 15824 "parsing/parser.ml" +# 15794 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -15889,18 +15859,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 15893 "parsing/parser.ml" +# 15863 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 15898 "parsing/parser.ml" +# 15868 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 15904 "parsing/parser.ml" +# 15874 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -15909,22 +15879,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 15915 "parsing/parser.ml" +# 15885 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 15921 "parsing/parser.ml" +# 15891 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -15937,34 +15907,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 15941 "parsing/parser.ml" +# 15911 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 15947 "parsing/parser.ml" +# 15917 "parsing/parser.ml" in let op = let _1 = -# 3840 "parsing/parser.mly" +# 4011 "parsing/parser.mly" ("&&") -# 15954 "parsing/parser.ml" +# 15924 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 15962 "parsing/parser.ml" +# 15932 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 15968 "parsing/parser.ml" +# 15938 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -15972,15 +15942,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 15978 "parsing/parser.ml" +# 15948 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 15984 "parsing/parser.ml" +# 15954 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -16023,35 +15993,35 @@ module Tables = struct let e2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 16029 "parsing/parser.ml" +# 15999 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 16034 "parsing/parser.ml" +# 16004 "parsing/parser.ml" in let op = let _1 = -# 3841 "parsing/parser.mly" +# 4012 "parsing/parser.mly" (":=") -# 16041 "parsing/parser.ml" +# 16011 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 16049 "parsing/parser.ml" +# 16019 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 16055 "parsing/parser.ml" +# 16025 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_e1_) in @@ -16059,15 +16029,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 16065 "parsing/parser.ml" +# 16035 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 16071 "parsing/parser.ml" +# 16041 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -16136,18 +16106,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 16140 "parsing/parser.ml" +# 16110 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 16145 "parsing/parser.ml" +# 16115 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 16151 "parsing/parser.ml" +# 16121 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -16156,22 +16126,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 16162 "parsing/parser.ml" +# 16132 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 16168 "parsing/parser.ml" +# 16138 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -16184,34 +16154,34 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 16188 "parsing/parser.ml" +# 16158 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 16194 "parsing/parser.ml" +# 16164 "parsing/parser.ml" in let op = let _1 = -# 3841 "parsing/parser.mly" +# 4012 "parsing/parser.mly" (":=") -# 16201 "parsing/parser.ml" +# 16171 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 16209 "parsing/parser.ml" +# 16179 "parsing/parser.ml" in -# 2506 "parsing/parser.mly" +# 2493 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 16215 "parsing/parser.ml" +# 16185 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_e1_) in @@ -16219,15 +16189,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 16225 "parsing/parser.ml" +# 16195 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 16231 "parsing/parser.ml" +# 16201 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -16263,14 +16233,14 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 16269 "parsing/parser.ml" +# 16239 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 16274 "parsing/parser.ml" +# 16244 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -16279,9 +16249,9 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2508 "parsing/parser.mly" +# 2495 "parsing/parser.mly" ( mkuminus ~sloc:_sloc ~oploc:_loc__1_ _1 _2 ) -# 16285 "parsing/parser.ml" +# 16255 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -16289,15 +16259,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 16295 "parsing/parser.ml" +# 16265 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 16301 "parsing/parser.ml" +# 16271 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -16359,18 +16329,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 16363 "parsing/parser.ml" +# 16333 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 16368 "parsing/parser.ml" +# 16338 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 16374 "parsing/parser.ml" +# 16344 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -16379,22 +16349,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 16385 "parsing/parser.ml" +# 16355 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 16391 "parsing/parser.ml" +# 16361 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -16407,13 +16377,13 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 16411 "parsing/parser.ml" +# 16381 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 16417 "parsing/parser.ml" +# 16387 "parsing/parser.ml" in let _endpos__2_ = _endpos_xs_ in @@ -16422,9 +16392,9 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2508 "parsing/parser.mly" +# 2495 "parsing/parser.mly" ( mkuminus ~sloc:_sloc ~oploc:_loc__1_ _1 _2 ) -# 16428 "parsing/parser.ml" +# 16398 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -16432,15 +16402,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 16438 "parsing/parser.ml" +# 16408 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 16444 "parsing/parser.ml" +# 16414 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -16476,14 +16446,14 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 16482 "parsing/parser.ml" +# 16452 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 16487 "parsing/parser.ml" +# 16457 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -16492,9 +16462,9 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2510 "parsing/parser.mly" +# 2497 "parsing/parser.mly" ( mkuplus ~sloc:_sloc ~oploc:_loc__1_ _1 _2 ) -# 16498 "parsing/parser.ml" +# 16468 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -16502,15 +16472,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 16508 "parsing/parser.ml" +# 16478 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 16514 "parsing/parser.ml" +# 16484 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -16572,18 +16542,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 16576 "parsing/parser.ml" +# 16546 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 16581 "parsing/parser.ml" +# 16551 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 16587 "parsing/parser.ml" +# 16557 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -16592,22 +16562,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 16598 "parsing/parser.ml" +# 16568 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 16604 "parsing/parser.ml" +# 16574 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -16620,13 +16590,13 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 16624 "parsing/parser.ml" +# 16594 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 16630 "parsing/parser.ml" +# 16600 "parsing/parser.ml" in let _endpos__2_ = _endpos_xs_ in @@ -16635,9 +16605,9 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2510 "parsing/parser.mly" +# 2497 "parsing/parser.mly" ( mkuplus ~sloc:_sloc ~oploc:_loc__1_ _1 _2 ) -# 16641 "parsing/parser.ml" +# 16611 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -16645,15 +16615,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 16651 "parsing/parser.ml" +# 16621 "parsing/parser.ml" in ( -# 2426 "parsing/parser.mly" +# 2412 "parsing/parser.mly" ( _1 ) -# 16657 "parsing/parser.ml" +# 16627 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -16695,9 +16665,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2428 "parsing/parser.mly" +# 2414 "parsing/parser.mly" ( expr_of_let_bindings ~loc:_sloc _1 _3 ) -# 16701 "parsing/parser.ml" +# 16671 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -16738,9 +16708,9 @@ module Tables = struct let _3 : unit = Obj.magic _3 in let bindings : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = Obj.magic bindings in let _1 : ( -# 779 "parsing/parser.mly" +# 767 "parsing/parser.mly" (string) -# 16744 "parsing/parser.ml" +# 16714 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -16751,9 +16721,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 16757 "parsing/parser.ml" +# 16727 "parsing/parser.ml" in let _startpos_pbop_op_ = _startpos__1_ in @@ -16761,13 +16731,13 @@ module Tables = struct let _symbolstartpos = _startpos_pbop_op_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2430 "parsing/parser.mly" +# 2416 "parsing/parser.mly" ( let (pbop_pat, pbop_exp, rev_ands) = bindings in let ands = List.rev rev_ands in let pbop_loc = make_loc _sloc in let let_ = {pbop_op; pbop_pat; pbop_exp; pbop_loc} in mkexp ~loc:_sloc (Pexp_letop{ let_; ands; body}) ) -# 16771 "parsing/parser.ml" +# 16741 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -16808,14 +16778,14 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 16814 "parsing/parser.ml" +# 16784 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 16819 "parsing/parser.ml" +# 16789 "parsing/parser.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -16824,9 +16794,10 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in ( -# 2436 "parsing/parser.mly" - ( mkexp_cons ~loc:_sloc _loc__2_ (ghexp ~loc:_sloc (Pexp_tuple[_1;_3])) ) -# 16830 "parsing/parser.ml" +# 2422 "parsing/parser.mly" + ( mkexp_cons ~loc:_sloc _loc__2_ + (ghexp ~loc:_sloc (Pexp_tuple[None,_1;None,_3])) ) +# 16801 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -16893,18 +16864,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 16897 "parsing/parser.ml" +# 16868 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 16902 "parsing/parser.ml" +# 16873 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 16908 "parsing/parser.ml" +# 16879 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -16913,22 +16884,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 16919 "parsing/parser.ml" +# 16890 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 16925 "parsing/parser.ml" +# 16896 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -16941,13 +16912,13 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 16945 "parsing/parser.ml" +# 16916 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 16951 "parsing/parser.ml" +# 16922 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -16956,9 +16927,10 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in ( -# 2436 "parsing/parser.mly" - ( mkexp_cons ~loc:_sloc _loc__2_ (ghexp ~loc:_sloc (Pexp_tuple[_1;_3])) ) -# 16962 "parsing/parser.ml" +# 2422 "parsing/parser.mly" + ( mkexp_cons ~loc:_sloc _loc__2_ + (ghexp ~loc:_sloc (Pexp_tuple[None,_1;None,_3])) ) +# 16934 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -16992,9 +16964,9 @@ module Tables = struct let _1_inlined1 : (Parsetree.expression) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 16998 "parsing/parser.ml" +# 16970 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -17003,39 +16975,39 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 17009 "parsing/parser.ml" +# 16981 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 17014 "parsing/parser.ml" +# 16986 "parsing/parser.ml" in let _endpos__3_ = _endpos__1_inlined1_ in let _1 = let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 17022 "parsing/parser.ml" +# 16994 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 17030 "parsing/parser.ml" +# 17002 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2438 "parsing/parser.mly" +# 2425 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_setinstvar(_1, _3)) ) -# 17039 "parsing/parser.ml" +# 17011 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -17090,9 +17062,9 @@ module Tables = struct let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 17096 "parsing/parser.ml" +# 17068 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -17106,18 +17078,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 17110 "parsing/parser.ml" +# 17082 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 17115 "parsing/parser.ml" +# 17087 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 17121 "parsing/parser.ml" +# 17093 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -17126,22 +17098,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 17132 "parsing/parser.ml" +# 17104 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 17138 "parsing/parser.ml" +# 17110 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -17154,38 +17126,38 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 17158 "parsing/parser.ml" +# 17130 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 17164 "parsing/parser.ml" +# 17136 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in let _1 = let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 17172 "parsing/parser.ml" +# 17144 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 17180 "parsing/parser.ml" +# 17152 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2438 "parsing/parser.mly" +# 2425 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_setinstvar(_1, _3)) ) -# 17189 "parsing/parser.ml" +# 17161 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -17240,14 +17212,14 @@ module Tables = struct let _5 = let _1 = _1_inlined2 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 17246 "parsing/parser.ml" +# 17218 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 17251 "parsing/parser.ml" +# 17223 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined2_ in @@ -17257,18 +17229,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 17263 "parsing/parser.ml" +# 17235 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2440 "parsing/parser.mly" +# 2427 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_setfield(_1, _3, _5)) ) -# 17272 "parsing/parser.ml" +# 17244 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -17349,18 +17321,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 17353 "parsing/parser.ml" +# 17325 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 17358 "parsing/parser.ml" +# 17330 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 17364 "parsing/parser.ml" +# 17336 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -17369,22 +17341,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 17375 "parsing/parser.ml" +# 17347 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 17381 "parsing/parser.ml" +# 17353 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -17397,13 +17369,13 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 17401 "parsing/parser.ml" +# 17373 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 17407 "parsing/parser.ml" +# 17379 "parsing/parser.ml" in let _endpos__5_ = _endpos_xs_ in @@ -17413,18 +17385,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 17419 "parsing/parser.ml" +# 17391 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2440 "parsing/parser.mly" +# 2427 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_setfield(_1, _3, _5)) ) -# 17428 "parsing/parser.ml" +# 17400 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -17495,26 +17467,26 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 17501 "parsing/parser.ml" +# 17473 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 17506 "parsing/parser.ml" +# 17478 "parsing/parser.ml" in -# 2441 "parsing/parser.mly" +# 2428 "parsing/parser.mly" (Some v) -# 17512 "parsing/parser.ml" +# 17484 "parsing/parser.ml" in -# 2401 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 17518 "parsing/parser.ml" +# 17490 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_array_) in @@ -17522,9 +17494,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2442 "parsing/parser.mly" +# 2429 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 17528 "parsing/parser.ml" +# 17500 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -17621,18 +17593,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 17625 "parsing/parser.ml" +# 17597 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 17630 "parsing/parser.ml" +# 17602 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 17636 "parsing/parser.ml" +# 17608 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -17641,22 +17613,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 17647 "parsing/parser.ml" +# 17619 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 17653 "parsing/parser.ml" +# 17625 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -17669,25 +17641,25 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 17673 "parsing/parser.ml" +# 17645 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 17679 "parsing/parser.ml" +# 17651 "parsing/parser.ml" in -# 2441 "parsing/parser.mly" +# 2428 "parsing/parser.mly" (Some v) -# 17685 "parsing/parser.ml" +# 17657 "parsing/parser.ml" in -# 2401 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 17691 "parsing/parser.ml" +# 17663 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_array_) in @@ -17695,9 +17667,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2442 "parsing/parser.mly" +# 2429 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 17701 "parsing/parser.ml" +# 17673 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -17768,26 +17740,26 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 17774 "parsing/parser.ml" +# 17746 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 17779 "parsing/parser.ml" +# 17751 "parsing/parser.ml" in -# 2441 "parsing/parser.mly" +# 2428 "parsing/parser.mly" (Some v) -# 17785 "parsing/parser.ml" +# 17757 "parsing/parser.ml" in -# 2403 "parsing/parser.mly" +# 2389 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 17791 "parsing/parser.ml" +# 17763 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_array_) in @@ -17795,9 +17767,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2442 "parsing/parser.mly" +# 2429 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 17801 "parsing/parser.ml" +# 17773 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -17894,18 +17866,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 17898 "parsing/parser.ml" +# 17870 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 17903 "parsing/parser.ml" +# 17875 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 17909 "parsing/parser.ml" +# 17881 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -17914,22 +17886,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 17920 "parsing/parser.ml" +# 17892 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 17926 "parsing/parser.ml" +# 17898 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -17942,25 +17914,25 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 17946 "parsing/parser.ml" +# 17918 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 17952 "parsing/parser.ml" +# 17924 "parsing/parser.ml" in -# 2441 "parsing/parser.mly" +# 2428 "parsing/parser.mly" (Some v) -# 17958 "parsing/parser.ml" +# 17930 "parsing/parser.ml" in -# 2403 "parsing/parser.mly" +# 2389 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 17964 "parsing/parser.ml" +# 17936 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_array_) in @@ -17968,9 +17940,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2442 "parsing/parser.mly" +# 2429 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 17974 "parsing/parser.ml" +# 17946 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -18041,26 +18013,26 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 18047 "parsing/parser.ml" +# 18019 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 18052 "parsing/parser.ml" +# 18024 "parsing/parser.ml" in -# 2441 "parsing/parser.mly" +# 2428 "parsing/parser.mly" (Some v) -# 18058 "parsing/parser.ml" +# 18030 "parsing/parser.ml" in -# 2405 "parsing/parser.mly" +# 2391 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 18064 "parsing/parser.ml" +# 18036 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_array_) in @@ -18068,9 +18040,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2442 "parsing/parser.mly" +# 2429 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 18074 "parsing/parser.ml" +# 18046 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -18167,18 +18139,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 18171 "parsing/parser.ml" +# 18143 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 18176 "parsing/parser.ml" +# 18148 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 18182 "parsing/parser.ml" +# 18154 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -18187,22 +18159,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 18193 "parsing/parser.ml" +# 18165 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 18199 "parsing/parser.ml" +# 18171 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -18215,25 +18187,25 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 18219 "parsing/parser.ml" +# 18191 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 18225 "parsing/parser.ml" +# 18197 "parsing/parser.ml" in -# 2441 "parsing/parser.mly" +# 2428 "parsing/parser.mly" (Some v) -# 18231 "parsing/parser.ml" +# 18203 "parsing/parser.ml" in -# 2405 "parsing/parser.mly" +# 2391 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 18237 "parsing/parser.ml" +# 18209 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_array_) in @@ -18241,9 +18213,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2442 "parsing/parser.mly" +# 2429 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 18247 "parsing/parser.ml" +# 18219 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -18304,9 +18276,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 18310 "parsing/parser.ml" +# 18282 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -18318,43 +18290,43 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 18324 "parsing/parser.ml" +# 18296 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 18329 "parsing/parser.ml" +# 18301 "parsing/parser.ml" in -# 2443 "parsing/parser.mly" +# 2430 "parsing/parser.mly" (Some v) -# 18335 "parsing/parser.ml" +# 18307 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 18341 "parsing/parser.ml" +# 18313 "parsing/parser.ml" in let d = let _1 = # 123 "" ( None ) -# 18347 "parsing/parser.ml" +# 18319 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 18352 "parsing/parser.ml" +# 18324 "parsing/parser.ml" in -# 2401 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 18358 "parsing/parser.ml" +# 18330 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_array_) in @@ -18362,9 +18334,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2444 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 18368 "parsing/parser.ml" +# 18340 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -18446,9 +18418,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 18452 "parsing/parser.ml" +# 18424 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -18465,18 +18437,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 18469 "parsing/parser.ml" +# 18441 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 18474 "parsing/parser.ml" +# 18446 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 18480 "parsing/parser.ml" +# 18452 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -18485,22 +18457,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 18491 "parsing/parser.ml" +# 18463 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 18497 "parsing/parser.ml" +# 18469 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -18513,42 +18485,42 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 18517 "parsing/parser.ml" +# 18489 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 18523 "parsing/parser.ml" +# 18495 "parsing/parser.ml" in -# 2443 "parsing/parser.mly" +# 2430 "parsing/parser.mly" (Some v) -# 18529 "parsing/parser.ml" +# 18501 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 18535 "parsing/parser.ml" +# 18507 "parsing/parser.ml" in let d = let _1 = # 123 "" ( None ) -# 18541 "parsing/parser.ml" +# 18513 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 18546 "parsing/parser.ml" +# 18518 "parsing/parser.ml" in -# 2401 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 18552 "parsing/parser.ml" +# 18524 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_array_) in @@ -18556,9 +18528,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2444 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 18562 "parsing/parser.ml" +# 18534 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -18631,9 +18603,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 18637 "parsing/parser.ml" +# 18609 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -18648,51 +18620,51 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 18654 "parsing/parser.ml" +# 18626 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 18659 "parsing/parser.ml" +# 18631 "parsing/parser.ml" in -# 2443 "parsing/parser.mly" +# 2430 "parsing/parser.mly" (Some v) -# 18665 "parsing/parser.ml" +# 18637 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 18671 "parsing/parser.ml" +# 18643 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" (_2) -# 18679 "parsing/parser.ml" +# 18651 "parsing/parser.ml" in # 126 "" ( Some x ) -# 18684 "parsing/parser.ml" +# 18656 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 18690 "parsing/parser.ml" +# 18662 "parsing/parser.ml" in -# 2401 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 18696 "parsing/parser.ml" +# 18668 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos_array_) in @@ -18700,9 +18672,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2444 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 18706 "parsing/parser.ml" +# 18678 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -18796,9 +18768,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 18802 "parsing/parser.ml" +# 18774 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -18818,18 +18790,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 18822 "parsing/parser.ml" +# 18794 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 18827 "parsing/parser.ml" +# 18799 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 18833 "parsing/parser.ml" +# 18805 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -18838,22 +18810,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 18844 "parsing/parser.ml" +# 18816 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 18850 "parsing/parser.ml" +# 18822 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -18866,50 +18838,50 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 18870 "parsing/parser.ml" +# 18842 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 18876 "parsing/parser.ml" +# 18848 "parsing/parser.ml" in -# 2443 "parsing/parser.mly" +# 2430 "parsing/parser.mly" (Some v) -# 18882 "parsing/parser.ml" +# 18854 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 18888 "parsing/parser.ml" +# 18860 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" (_2) -# 18896 "parsing/parser.ml" +# 18868 "parsing/parser.ml" in # 126 "" ( Some x ) -# 18901 "parsing/parser.ml" +# 18873 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 18907 "parsing/parser.ml" +# 18879 "parsing/parser.ml" in -# 2401 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 18913 "parsing/parser.ml" +# 18885 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_array_) in @@ -18917,9 +18889,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2444 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 18923 "parsing/parser.ml" +# 18895 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -18980,9 +18952,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 18986 "parsing/parser.ml" +# 18958 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -18994,43 +18966,43 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 19000 "parsing/parser.ml" +# 18972 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 19005 "parsing/parser.ml" +# 18977 "parsing/parser.ml" in -# 2443 "parsing/parser.mly" +# 2430 "parsing/parser.mly" (Some v) -# 19011 "parsing/parser.ml" +# 18983 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 19017 "parsing/parser.ml" +# 18989 "parsing/parser.ml" in let d = let _1 = # 123 "" ( None ) -# 19023 "parsing/parser.ml" +# 18995 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 19028 "parsing/parser.ml" +# 19000 "parsing/parser.ml" in -# 2403 "parsing/parser.mly" +# 2389 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 19034 "parsing/parser.ml" +# 19006 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_array_) in @@ -19038,9 +19010,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2444 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 19044 "parsing/parser.ml" +# 19016 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -19122,9 +19094,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 19128 "parsing/parser.ml" +# 19100 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -19141,18 +19113,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 19145 "parsing/parser.ml" +# 19117 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 19150 "parsing/parser.ml" +# 19122 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 19156 "parsing/parser.ml" +# 19128 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -19161,22 +19133,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 19167 "parsing/parser.ml" +# 19139 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 19173 "parsing/parser.ml" +# 19145 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -19189,42 +19161,42 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 19193 "parsing/parser.ml" +# 19165 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 19199 "parsing/parser.ml" +# 19171 "parsing/parser.ml" in -# 2443 "parsing/parser.mly" +# 2430 "parsing/parser.mly" (Some v) -# 19205 "parsing/parser.ml" +# 19177 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 19211 "parsing/parser.ml" +# 19183 "parsing/parser.ml" in let d = let _1 = # 123 "" ( None ) -# 19217 "parsing/parser.ml" +# 19189 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 19222 "parsing/parser.ml" +# 19194 "parsing/parser.ml" in -# 2403 "parsing/parser.mly" +# 2389 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 19228 "parsing/parser.ml" +# 19200 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_array_) in @@ -19232,9 +19204,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2444 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 19238 "parsing/parser.ml" +# 19210 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -19307,9 +19279,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 19313 "parsing/parser.ml" +# 19285 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -19324,51 +19296,51 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 19330 "parsing/parser.ml" +# 19302 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 19335 "parsing/parser.ml" +# 19307 "parsing/parser.ml" in -# 2443 "parsing/parser.mly" +# 2430 "parsing/parser.mly" (Some v) -# 19341 "parsing/parser.ml" +# 19313 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 19347 "parsing/parser.ml" +# 19319 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" (_2) -# 19355 "parsing/parser.ml" +# 19327 "parsing/parser.ml" in # 126 "" ( Some x ) -# 19360 "parsing/parser.ml" +# 19332 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 19366 "parsing/parser.ml" +# 19338 "parsing/parser.ml" in -# 2403 "parsing/parser.mly" +# 2389 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 19372 "parsing/parser.ml" +# 19344 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos_array_) in @@ -19376,9 +19348,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2444 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 19382 "parsing/parser.ml" +# 19354 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -19472,9 +19444,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 19478 "parsing/parser.ml" +# 19450 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -19494,18 +19466,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 19498 "parsing/parser.ml" +# 19470 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 19503 "parsing/parser.ml" +# 19475 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 19509 "parsing/parser.ml" +# 19481 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -19514,22 +19486,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 19520 "parsing/parser.ml" +# 19492 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 19526 "parsing/parser.ml" +# 19498 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -19542,50 +19514,50 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 19546 "parsing/parser.ml" +# 19518 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 19552 "parsing/parser.ml" +# 19524 "parsing/parser.ml" in -# 2443 "parsing/parser.mly" +# 2430 "parsing/parser.mly" (Some v) -# 19558 "parsing/parser.ml" +# 19530 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 19564 "parsing/parser.ml" +# 19536 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" (_2) -# 19572 "parsing/parser.ml" +# 19544 "parsing/parser.ml" in # 126 "" ( Some x ) -# 19577 "parsing/parser.ml" +# 19549 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 19583 "parsing/parser.ml" +# 19555 "parsing/parser.ml" in -# 2403 "parsing/parser.mly" +# 2389 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 19589 "parsing/parser.ml" +# 19561 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_array_) in @@ -19593,9 +19565,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2444 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 19599 "parsing/parser.ml" +# 19571 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -19656,9 +19628,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 19662 "parsing/parser.ml" +# 19634 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -19670,43 +19642,43 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 19676 "parsing/parser.ml" +# 19648 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 19681 "parsing/parser.ml" +# 19653 "parsing/parser.ml" in -# 2443 "parsing/parser.mly" +# 2430 "parsing/parser.mly" (Some v) -# 19687 "parsing/parser.ml" +# 19659 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 19693 "parsing/parser.ml" +# 19665 "parsing/parser.ml" in let d = let _1 = # 123 "" ( None ) -# 19699 "parsing/parser.ml" +# 19671 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 19704 "parsing/parser.ml" +# 19676 "parsing/parser.ml" in -# 2405 "parsing/parser.mly" +# 2391 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 19710 "parsing/parser.ml" +# 19682 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_array_) in @@ -19714,9 +19686,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2444 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 19720 "parsing/parser.ml" +# 19692 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -19798,9 +19770,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 19804 "parsing/parser.ml" +# 19776 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -19817,18 +19789,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 19821 "parsing/parser.ml" +# 19793 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 19826 "parsing/parser.ml" +# 19798 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 19832 "parsing/parser.ml" +# 19804 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -19837,22 +19809,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 19843 "parsing/parser.ml" +# 19815 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 19849 "parsing/parser.ml" +# 19821 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -19865,42 +19837,42 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 19869 "parsing/parser.ml" +# 19841 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 19875 "parsing/parser.ml" +# 19847 "parsing/parser.ml" in -# 2443 "parsing/parser.mly" +# 2430 "parsing/parser.mly" (Some v) -# 19881 "parsing/parser.ml" +# 19853 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 19887 "parsing/parser.ml" +# 19859 "parsing/parser.ml" in let d = let _1 = # 123 "" ( None ) -# 19893 "parsing/parser.ml" +# 19865 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 19898 "parsing/parser.ml" +# 19870 "parsing/parser.ml" in -# 2405 "parsing/parser.mly" +# 2391 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 19904 "parsing/parser.ml" +# 19876 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_array_) in @@ -19908,9 +19880,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2444 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 19914 "parsing/parser.ml" +# 19886 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -19983,9 +19955,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 19989 "parsing/parser.ml" +# 19961 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -20000,51 +19972,51 @@ module Tables = struct let v = let _1 = _1_inlined1 in let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 20006 "parsing/parser.ml" +# 19978 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 20011 "parsing/parser.ml" +# 19983 "parsing/parser.ml" in -# 2443 "parsing/parser.mly" +# 2430 "parsing/parser.mly" (Some v) -# 20017 "parsing/parser.ml" +# 19989 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 20023 "parsing/parser.ml" +# 19995 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" (_2) -# 20031 "parsing/parser.ml" +# 20003 "parsing/parser.ml" in # 126 "" ( Some x ) -# 20036 "parsing/parser.ml" +# 20008 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 20042 "parsing/parser.ml" +# 20014 "parsing/parser.ml" in -# 2405 "parsing/parser.mly" +# 2391 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 20048 "parsing/parser.ml" +# 20020 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos_array_) in @@ -20052,9 +20024,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2444 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 20058 "parsing/parser.ml" +# 20030 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -20148,9 +20120,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 20154 "parsing/parser.ml" +# 20126 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -20170,18 +20142,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 20174 "parsing/parser.ml" +# 20146 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 20179 "parsing/parser.ml" +# 20151 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 20185 "parsing/parser.ml" +# 20157 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -20190,22 +20162,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 20196 "parsing/parser.ml" +# 20168 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 20202 "parsing/parser.ml" +# 20174 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -20218,50 +20190,50 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 20222 "parsing/parser.ml" +# 20194 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 20228 "parsing/parser.ml" +# 20200 "parsing/parser.ml" in -# 2443 "parsing/parser.mly" +# 2430 "parsing/parser.mly" (Some v) -# 20234 "parsing/parser.ml" +# 20206 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 20240 "parsing/parser.ml" +# 20212 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" (_2) -# 20248 "parsing/parser.ml" +# 20220 "parsing/parser.ml" in # 126 "" ( Some x ) -# 20253 "parsing/parser.ml" +# 20225 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 20259 "parsing/parser.ml" +# 20231 "parsing/parser.ml" in -# 2405 "parsing/parser.mly" +# 2391 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 20265 "parsing/parser.ml" +# 20237 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_array_) in @@ -20269,9 +20241,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2444 "parsing/parser.mly" +# 2431 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 20275 "parsing/parser.ml" +# 20247 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -20302,9 +20274,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2446 "parsing/parser.mly" +# 2433 "parsing/parser.mly" ( Exp.attr _1 _2 ) -# 20308 "parsing/parser.ml" +# 20280 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20329,9 +20301,9 @@ module Tables = struct let _v = let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 2449 "parsing/parser.mly" +# 2436 "parsing/parser.mly" ( not_expecting _loc__1_ "wildcard \"_\"" ) -# 20335 "parsing/parser.ml" +# 20307 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -20377,15 +20349,15 @@ module Tables = struct let _endpos = _endpos__4_ in let _v = let ty_params = -# 2679 "parsing/parser.mly" +# 2664 "parsing/parser.mly" ( xs ) -# 20383 "parsing/parser.ml" +# 20355 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2810 "parsing/parser.mly" +# 2795 "parsing/parser.mly" ( (* We desugar (type a b c) to (type a) (type b) (type c). If we do this desugaring, the loc for each parameter is a ghost. *) @@ -20399,7 +20371,7 @@ module Tables = struct (fun x -> { pparam_loc = loc; pparam_desc = Pparam_newtype x }) ty_params ) -# 20403 "parsing/parser.ml" +# 20375 "parsing/parser.ml" : (Parsetree.function_param list)) in { @@ -20427,11 +20399,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2824 "parsing/parser.mly" +# 2809 "parsing/parser.mly" ( let a, b, c = _1 in [ { pparam_loc = make_loc _sloc; pparam_desc = Pparam_val (a, b, c) } ] ) -# 20435 "parsing/parser.ml" +# 20407 "parsing/parser.ml" : (Parsetree.function_param list)) in { @@ -20459,18 +20431,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 20463 "parsing/parser.ml" +# 20435 "parsing/parser.ml" in -# 1107 "parsing/parser.mly" +# 1095 "parsing/parser.mly" ( xs ) -# 20468 "parsing/parser.ml" +# 20440 "parsing/parser.ml" in ( -# 2829 "parsing/parser.mly" +# 2814 "parsing/parser.mly" ( _1 ) -# 20474 "parsing/parser.ml" +# 20446 "parsing/parser.ml" : (Parsetree.function_param list)) in { @@ -20494,9 +20466,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 2336 "parsing/parser.mly" +# 2324 "parsing/parser.mly" ( _1 ) -# 20500 "parsing/parser.ml" +# 20472 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20526,9 +20498,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2337 "parsing/parser.mly" +# 2325 "parsing/parser.mly" ( _1 ) -# 20532 "parsing/parser.ml" +# 20504 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20567,24 +20539,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 2339 "parsing/parser.mly" +# 2327 "parsing/parser.mly" ( Pexp_sequence(_1, _3) ) -# 20573 "parsing/parser.ml" +# 20545 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 20582 "parsing/parser.ml" +# 20554 "parsing/parser.ml" in ( -# 2340 "parsing/parser.mly" +# 2328 "parsing/parser.mly" ( _1 ) -# 20588 "parsing/parser.ml" +# 20560 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -20640,11 +20612,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2342 "parsing/parser.mly" - ( let seq = mkexp ~loc:_sloc (Pexp_sequence (_1, _5)) in - let payload = PStr [mkstrexp seq []] in - mkexp ~loc:_sloc (Pexp_extension (_4, payload)) ) -# 20648 "parsing/parser.ml" +# 2330 "parsing/parser.mly" + ( mkexp_attrs ~loc:_sloc (Pexp_sequence (_1, _5)) (Some _4, []) ) +# 20618 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -20668,9 +20638,9 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.core_type) = -# 3531 "parsing/parser.mly" +# 3655 "parsing/parser.mly" ( ty ) -# 20674 "parsing/parser.ml" +# 20644 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20717,19 +20687,19 @@ module Tables = struct let _1 = let _1 = let domain = -# 982 "parsing/parser.mly" +# 970 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 20723 "parsing/parser.ml" +# 20693 "parsing/parser.ml" in let label = -# 3543 "parsing/parser.mly" +# 3695 "parsing/parser.mly" ( Optional label ) -# 20728 "parsing/parser.ml" +# 20698 "parsing/parser.ml" in -# 3537 "parsing/parser.mly" +# 3661 "parsing/parser.mly" ( Ptyp_arrow(label, domain, codomain) ) -# 20733 "parsing/parser.ml" +# 20703 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -20737,15 +20707,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 20743 "parsing/parser.ml" +# 20713 "parsing/parser.ml" in ( -# 3539 "parsing/parser.mly" +# 3663 "parsing/parser.mly" ( _1 ) -# 20749 "parsing/parser.ml" +# 20719 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -20793,9 +20763,9 @@ module Tables = struct let _1 : (Parsetree.core_type) = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 20799 "parsing/parser.ml" +# 20769 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -20804,19 +20774,19 @@ module Tables = struct let _1 = let _1 = let domain = -# 982 "parsing/parser.mly" +# 970 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 20810 "parsing/parser.ml" +# 20780 "parsing/parser.ml" in let label = -# 3545 "parsing/parser.mly" +# 3697 "parsing/parser.mly" ( Labelled label ) -# 20815 "parsing/parser.ml" +# 20785 "parsing/parser.ml" in -# 3537 "parsing/parser.mly" +# 3661 "parsing/parser.mly" ( Ptyp_arrow(label, domain, codomain) ) -# 20820 "parsing/parser.ml" +# 20790 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -20824,15 +20794,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 20830 "parsing/parser.ml" +# 20800 "parsing/parser.ml" in ( -# 3539 "parsing/parser.mly" +# 3663 "parsing/parser.mly" ( _1 ) -# 20836 "parsing/parser.ml" +# 20806 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -20873,19 +20843,19 @@ module Tables = struct let _1 = let _1 = let domain = -# 982 "parsing/parser.mly" +# 970 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 20879 "parsing/parser.ml" +# 20849 "parsing/parser.ml" in let label = -# 3547 "parsing/parser.mly" +# 3699 "parsing/parser.mly" ( Nolabel ) -# 20884 "parsing/parser.ml" +# 20854 "parsing/parser.ml" in -# 3537 "parsing/parser.mly" +# 3661 "parsing/parser.mly" ( Ptyp_arrow(label, domain, codomain) ) -# 20889 "parsing/parser.ml" +# 20859 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -20893,15 +20863,217 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 20899 "parsing/parser.ml" +# 20869 "parsing/parser.ml" in ( -# 3539 "parsing/parser.mly" +# 3663 "parsing/parser.mly" + ( _1 ) +# 20875 "parsing/parser.ml" + : (Parsetree.core_type)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = codomain; + MenhirLib.EngineTypes.startp = _startpos_codomain_; + MenhirLib.EngineTypes.endp = _endpos_codomain_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = ty; + MenhirLib.EngineTypes.startp = _startpos_ty_; + MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let codomain : (Parsetree.core_type) = Obj.magic codomain in + let _4 : unit = Obj.magic _4 in + let xs : ((string option * Parsetree.core_type) list) = Obj.magic xs in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let ty : (Parsetree.core_type) = Obj.magic ty in + let _2 : unit = Obj.magic _2 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 20939 "parsing/parser.ml" + ) = Obj.magic label in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_label_ in + let _endpos = _endpos_codomain_ in + let _v = + let _1 = + let _1 = + let tuple = + let ltys = + let xs = +# 264 "" + ( List.rev xs ) +# 20952 "parsing/parser.ml" + in + +# 1127 "parsing/parser.mly" + ( xs ) +# 20957 "parsing/parser.ml" + + in + +# 3725 "parsing/parser.mly" + ( ty, ltys ) +# 20963 "parsing/parser.ml" + + in + let (_endpos_tuple_, _startpos_tuple_) = (_endpos_xs_, _startpos_ty_) in + let _loc_tuple_ = (_startpos_tuple_, _endpos_tuple_) in + +# 3679 "parsing/parser.mly" + ( let ty, ltys = tuple in + let tuple_loc = _loc_tuple_ in + let domain = + mktyp ~loc:tuple_loc (Ptyp_tuple ((None, ty) :: ltys)) + in + let domain = extra_rhs_core_type domain ~pos:(snd tuple_loc) in + Ptyp_arrow(Labelled label, domain, codomain) ) +# 20977 "parsing/parser.ml" + + in + let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1009 "parsing/parser.mly" + ( mktyp ~loc:_sloc _1 ) +# 20987 "parsing/parser.ml" + + in + ( +# 3687 "parsing/parser.mly" ( _1 ) -# 20905 "parsing/parser.ml" +# 20993 "parsing/parser.ml" + : (Parsetree.core_type)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = ty; + MenhirLib.EngineTypes.startp = _startpos_ty_; + MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let xs : ((string option * Parsetree.core_type) list) = Obj.magic xs in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let ty : (Parsetree.core_type) = Obj.magic ty in + let _2 : unit = Obj.magic _2 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 21043 "parsing/parser.ml" + ) = Obj.magic label in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_label_ in + let _endpos = _endpos_xs_ in + let _v = + let _3 = + let ltys = + let xs = +# 264 "" + ( List.rev xs ) +# 21054 "parsing/parser.ml" + in + +# 1127 "parsing/parser.mly" + ( xs ) +# 21059 "parsing/parser.ml" + + in + +# 3725 "parsing/parser.mly" + ( ty, ltys ) +# 21065 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos_label_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 3689 "parsing/parser.mly" + ( let ty, ltys = _3 in + mktyp ~loc:_sloc (Ptyp_tuple ((Some label, ty) :: ltys)) + ) +# 21077 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -20934,9 +21106,9 @@ module Tables = struct let _v = let _startpos = _startpos__1_ in ( -# 1393 "parsing/parser.mly" +# 1381 "parsing/parser.mly" ( _startpos, Unit ) -# 20940 "parsing/parser.ml" +# 21112 "parsing/parser.ml" : (Lexing.position * Parsetree.functor_parameter)) in { @@ -20994,16 +21166,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21000 "parsing/parser.ml" +# 21172 "parsing/parser.ml" in let _startpos = _startpos__1_ in ( -# 1396 "parsing/parser.mly" +# 1384 "parsing/parser.mly" ( _startpos, Named (x, mty) ) -# 21007 "parsing/parser.ml" +# 21179 "parsing/parser.ml" : (Lexing.position * Parsetree.functor_parameter)) in { @@ -21021,9 +21193,9 @@ module Tables = struct let _endpos = _startpos in let _v : (Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3330 "parsing/parser.mly" +# 3453 "parsing/parser.mly" ( ([],Pcstr_tuple [],None) ) -# 21027 "parsing/parser.ml" +# 21199 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21054,9 +21226,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3331 "parsing/parser.mly" +# 3454 "parsing/parser.mly" ( ([],_2,None) ) -# 21060 "parsing/parser.ml" +# 21232 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21101,9 +21273,9 @@ module Tables = struct let _endpos = _endpos__4_ in let _v : (Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3333 "parsing/parser.mly" +# 3456 "parsing/parser.mly" ( ([],_2,Some _4) ) -# 21107 "parsing/parser.ml" +# 21279 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21166,24 +21338,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 21170 "parsing/parser.ml" +# 21342 "parsing/parser.ml" in -# 1086 "parsing/parser.mly" +# 1074 "parsing/parser.mly" ( xs ) -# 21175 "parsing/parser.ml" +# 21347 "parsing/parser.ml" in -# 3466 "parsing/parser.mly" +# 3590 "parsing/parser.mly" ( _1 ) -# 21181 "parsing/parser.ml" +# 21353 "parsing/parser.ml" in ( -# 3336 "parsing/parser.mly" +# 3459 "parsing/parser.mly" ( (_2,_4,Some _6) ) -# 21187 "parsing/parser.ml" +# 21359 "parsing/parser.ml" : (Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option)) in @@ -21216,9 +21388,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3338 "parsing/parser.mly" +# 3461 "parsing/parser.mly" ( ([],Pcstr_tuple [],Some _2) ) -# 21222 "parsing/parser.ml" +# 21394 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21267,24 +21439,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 21271 "parsing/parser.ml" +# 21443 "parsing/parser.ml" in -# 1086 "parsing/parser.mly" +# 1074 "parsing/parser.mly" ( xs ) -# 21276 "parsing/parser.ml" +# 21448 "parsing/parser.ml" in -# 3466 "parsing/parser.mly" +# 3590 "parsing/parser.mly" ( _1 ) -# 21282 "parsing/parser.ml" +# 21454 "parsing/parser.ml" in ( -# 3340 "parsing/parser.mly" +# 3463 "parsing/parser.mly" ( (_2,Pcstr_tuple [],Some _4) ) -# 21288 "parsing/parser.ml" +# 21460 "parsing/parser.ml" : (Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option)) in @@ -21334,9 +21506,9 @@ module Tables = struct let attrs = let _1 = _1_inlined2 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 21340 "parsing/parser.ml" +# 21512 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined2_ in @@ -21346,23 +21518,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21352 "parsing/parser.ml" +# 21524 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3278 "parsing/parser.mly" +# 3401 "parsing/parser.mly" ( let vars, args, res = vars_args_res in let info = symbol_info _endpos in let loc = make_loc _sloc in cid, vars, args, res, attrs, loc, info ) -# 21366 "parsing/parser.ml" +# 21538 "parsing/parser.ml" : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info)) @@ -21406,9 +21578,9 @@ module Tables = struct let attrs = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 21412 "parsing/parser.ml" +# 21584 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined1_ in @@ -21417,29 +21589,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21423 "parsing/parser.ml" +# 21595 "parsing/parser.ml" in let _startpos_cid_ = _startpos__1_ in let _1 = -# 3935 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( () ) -# 21430 "parsing/parser.ml" +# 21602 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos_cid_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3278 "parsing/parser.mly" +# 3401 "parsing/parser.mly" ( let vars, args, res = vars_args_res in let info = symbol_info _endpos in let loc = make_loc _sloc in cid, vars, args, res, attrs, loc, info ) -# 21443 "parsing/parser.ml" +# 21615 "parsing/parser.ml" : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info)) @@ -21513,9 +21685,9 @@ module Tables = struct let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in let _1_inlined3 : unit = Obj.magic _1_inlined3 in let _1_inlined2 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 21519 "parsing/parser.ml" +# 21691 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -21528,9 +21700,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 21534 "parsing/parser.ml" +# 21706 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -21539,24 +21711,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 21543 "parsing/parser.ml" +# 21715 "parsing/parser.ml" in -# 1068 "parsing/parser.mly" +# 1056 "parsing/parser.mly" ( xs ) -# 21548 "parsing/parser.ml" +# 21720 "parsing/parser.ml" in -# 3183 "parsing/parser.mly" +# 3300 "parsing/parser.mly" ( _1 ) -# 21554 "parsing/parser.ml" +# 21726 "parsing/parser.ml" in let kind_priv_manifest = -# 3218 "parsing/parser.mly" +# 3335 "parsing/parser.mly" ( _2 ) -# 21560 "parsing/parser.ml" +# 21732 "parsing/parser.ml" in let id = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -21564,29 +21736,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21570 "parsing/parser.ml" +# 21742 "parsing/parser.ml" in let flag = -# 3955 "parsing/parser.mly" +# 4126 "parsing/parser.mly" ( Recursive ) -# 21576 "parsing/parser.ml" +# 21748 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 21583 "parsing/parser.ml" +# 21755 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3155 "parsing/parser.mly" +# 3272 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -21595,7 +21767,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 21599 "parsing/parser.ml" +# 21771 "parsing/parser.ml" : ((Asttypes.rec_flag * string Asttypes.loc option) * Parsetree.type_declaration)) in @@ -21674,9 +21846,9 @@ module Tables = struct let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in let _1_inlined4 : unit = Obj.magic _1_inlined4 in let _1_inlined3 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 21680 "parsing/parser.ml" +# 21852 "parsing/parser.ml" ) = Obj.magic _1_inlined3 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined2 : unit = Obj.magic _1_inlined2 in @@ -21690,9 +21862,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined5 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 21696 "parsing/parser.ml" +# 21868 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined5_ in @@ -21701,24 +21873,24 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 21705 "parsing/parser.ml" +# 21877 "parsing/parser.ml" in -# 1068 "parsing/parser.mly" +# 1056 "parsing/parser.mly" ( xs ) -# 21710 "parsing/parser.ml" +# 21882 "parsing/parser.ml" in -# 3183 "parsing/parser.mly" +# 3300 "parsing/parser.mly" ( _1 ) -# 21716 "parsing/parser.ml" +# 21888 "parsing/parser.ml" in let kind_priv_manifest = -# 3218 "parsing/parser.mly" +# 3335 "parsing/parser.mly" ( _2 ) -# 21722 "parsing/parser.ml" +# 21894 "parsing/parser.ml" in let id = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -21726,9 +21898,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21732 "parsing/parser.ml" +# 21904 "parsing/parser.ml" in let flag = @@ -21737,24 +21909,24 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 3957 "parsing/parser.mly" +# 4128 "parsing/parser.mly" ( not_expecting _loc "nonrec flag" ) -# 21743 "parsing/parser.ml" +# 21915 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 21751 "parsing/parser.ml" +# 21923 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3155 "parsing/parser.mly" +# 3272 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -21763,7 +21935,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 21767 "parsing/parser.ml" +# 21939 "parsing/parser.ml" : ((Asttypes.rec_flag * string Asttypes.loc option) * Parsetree.type_declaration)) in @@ -21829,9 +22001,9 @@ module Tables = struct let xs : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs in let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in let _1_inlined2 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 21835 "parsing/parser.ml" +# 22007 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -21844,9 +22016,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 21850 "parsing/parser.ml" +# 22022 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -21855,18 +22027,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 21859 "parsing/parser.ml" +# 22031 "parsing/parser.ml" in -# 1068 "parsing/parser.mly" +# 1056 "parsing/parser.mly" ( xs ) -# 21864 "parsing/parser.ml" +# 22036 "parsing/parser.ml" in -# 3183 "parsing/parser.mly" +# 3300 "parsing/parser.mly" ( _1 ) -# 21870 "parsing/parser.ml" +# 22042 "parsing/parser.ml" in let id = @@ -21875,29 +22047,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21881 "parsing/parser.ml" +# 22053 "parsing/parser.ml" in let flag = -# 3951 "parsing/parser.mly" +# 4122 "parsing/parser.mly" ( Recursive ) -# 21887 "parsing/parser.ml" +# 22059 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 21894 "parsing/parser.ml" +# 22066 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3155 "parsing/parser.mly" +# 3272 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -21906,7 +22078,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 21910 "parsing/parser.ml" +# 22082 "parsing/parser.ml" : ((Asttypes.rec_flag * string Asttypes.loc option) * Parsetree.type_declaration)) in @@ -21978,9 +22150,9 @@ module Tables = struct let xs : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs in let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in let _1_inlined3 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 21984 "parsing/parser.ml" +# 22156 "parsing/parser.ml" ) = Obj.magic _1_inlined3 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined2 : unit = Obj.magic _1_inlined2 in @@ -21994,9 +22166,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 22000 "parsing/parser.ml" +# 22172 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -22005,18 +22177,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 22009 "parsing/parser.ml" +# 22181 "parsing/parser.ml" in -# 1068 "parsing/parser.mly" +# 1056 "parsing/parser.mly" ( xs ) -# 22014 "parsing/parser.ml" +# 22186 "parsing/parser.ml" in -# 3183 "parsing/parser.mly" +# 3300 "parsing/parser.mly" ( _1 ) -# 22020 "parsing/parser.ml" +# 22192 "parsing/parser.ml" in let id = @@ -22025,29 +22197,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22031 "parsing/parser.ml" +# 22203 "parsing/parser.ml" in let flag = -# 3952 "parsing/parser.mly" +# 4123 "parsing/parser.mly" ( Nonrecursive ) -# 22037 "parsing/parser.ml" +# 22209 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 22044 "parsing/parser.ml" +# 22216 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3155 "parsing/parser.mly" +# 3272 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -22056,7 +22228,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 22060 "parsing/parser.ml" +# 22232 "parsing/parser.ml" : ((Asttypes.rec_flag * string Asttypes.loc option) * Parsetree.type_declaration)) in @@ -22077,17 +22249,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 848 "parsing/parser.mly" +# 836 "parsing/parser.mly" (string) -# 22083 "parsing/parser.ml" +# 22255 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 3794 "parsing/parser.mly" +# 3965 "parsing/parser.mly" ( _1 ) -# 22091 "parsing/parser.ml" +# 22263 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22106,17 +22278,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 22112 "parsing/parser.ml" +# 22284 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 3795 "parsing/parser.mly" +# 3966 "parsing/parser.mly" ( _1 ) -# 22120 "parsing/parser.ml" +# 22292 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22146,9 +22318,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.structure) = -# 1260 "parsing/parser.mly" +# 1248 "parsing/parser.mly" ( _1 ) -# 22152 "parsing/parser.ml" +# 22324 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22164,9 +22336,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (string) = -# 3844 "parsing/parser.mly" +# 4015 "parsing/parser.mly" ( "" ) -# 22170 "parsing/parser.ml" +# 22342 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22196,398 +22368,398 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (string) = -# 3845 "parsing/parser.mly" +# 4016 "parsing/parser.mly" ( ";.." ) -# 22202 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.signature) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.signature) = -# 1267 "parsing/parser.mly" - ( _1 ) -# 22234 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.payload) = Obj.magic _3 in - let _2 : (Ast_helper.str) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in - let _v : (Parsetree.extension) = -# 4135 "parsing/parser.mly" - ( (_2, _3) ) -# 22280 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : ( -# 839 "parsing/parser.mly" - (string * Location.t * string * Location.t * string option) -# 22301 "parsing/parser.ml" - ) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - ( -# 4137 "parsing/parser.mly" - ( mk_quotedext ~loc:_sloc _1 ) -# 22313 "parsing/parser.ml" - : (Parsetree.extension)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - } = _menhir_stack in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in - let _3 : unit = Obj.magic _3 in - let _1_inlined1 : ( -# 797 "parsing/parser.mly" - (string) -# 22362 "parsing/parser.ml" - ) = Obj.magic _1_inlined1 in - let _1 : (Asttypes.mutable_flag) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined3_ in - let _v = - let _5 = - let _1 = _1_inlined3 in - -# 4114 "parsing/parser.mly" - ( _1 ) # 22374 "parsing/parser.ml" - - in - let _endpos__5_ = _endpos__1_inlined3_ in - let _4 = - let _1 = _1_inlined2 in - -# 3484 "parsing/parser.mly" - ( _1 ) -# 22383 "parsing/parser.ml" - - in - let _2 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _1 = -# 3765 "parsing/parser.mly" - ( _1 ) -# 22391 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 22399 "parsing/parser.ml" - - in - let _startpos__2_ = _startpos__1_inlined1_ in - let _endpos = _endpos__5_ in - let _symbolstartpos = if _startpos__1_ != _endpos__1_ then - _startpos__1_ - else - _startpos__2_ in - let _sloc = (_symbolstartpos, _endpos) in - ( -# 3357 "parsing/parser.mly" - ( let info = symbol_info _endpos in - Type.field _2 _4 ~mut:_1 ~attrs:_5 ~loc:(make_loc _sloc) ~info ) -# 22413 "parsing/parser.ml" - : (Parsetree.label_declaration)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - }; - } = _menhir_stack in - let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let _6 : unit = Obj.magic _6 in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in - let _3 : unit = Obj.magic _3 in - let _1_inlined1 : ( -# 797 "parsing/parser.mly" - (string) -# 22476 "parsing/parser.ml" - ) = Obj.magic _1_inlined1 in - let _1 : (Asttypes.mutable_flag) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined4_ in - let _v = - let _7 = - let _1 = _1_inlined4 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 22488 "parsing/parser.ml" - - in - let _endpos__7_ = _endpos__1_inlined4_ in - let _5 = - let _1 = _1_inlined3 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 22497 "parsing/parser.ml" - - in - let _endpos__5_ = _endpos__1_inlined3_ in - let _4 = - let _1 = _1_inlined2 in - -# 3484 "parsing/parser.mly" - ( _1 ) -# 22506 "parsing/parser.ml" - - in - let _2 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _1 = -# 3765 "parsing/parser.mly" - ( _1 ) -# 22514 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 22522 "parsing/parser.ml" - - in - let _startpos__2_ = _startpos__1_inlined1_ in - let _endpos = _endpos__7_ in - let _symbolstartpos = if _startpos__1_ != _endpos__1_ then - _startpos__1_ - else - _startpos__2_ in - let _sloc = (_symbolstartpos, _endpos) in - ( -# 3362 "parsing/parser.mly" - ( let info = - match rhs_info _endpos__5_ with - | Some _ as info_before_semi -> info_before_semi - | None -> symbol_info _endpos - in - Type.field _2 _4 ~mut:_1 ~attrs:(_5 @ _7) ~loc:(make_loc _sloc) ~info ) -# 22540 "parsing/parser.ml" - : (Parsetree.label_declaration)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Parsetree.label_declaration) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Parsetree.label_declaration list) = -# 3351 "parsing/parser.mly" - ( [_1] ) -# 22566 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Parsetree.label_declaration) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Parsetree.label_declaration list) = -# 3352 "parsing/parser.mly" - ( [_1] ) -# 22591 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.signature) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Parsetree.signature) = +# 1255 "parsing/parser.mly" + ( _1 ) +# 22406 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.payload) = Obj.magic _3 in + let _2 : (Ast_helper.str) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in + let _v : (Parsetree.extension) = +# 4307 "parsing/parser.mly" + ( (_2, _3) ) +# 22452 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : ( +# 827 "parsing/parser.mly" + (string * Location.t * string * Location.t * string option) +# 22473 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 4309 "parsing/parser.mly" + ( mk_quotedext ~loc:_sloc _1 ) +# 22485 "parsing/parser.ml" + : (Parsetree.extension)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in + let _3 : unit = Obj.magic _3 in + let _1_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 22534 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _1 : (Asttypes.mutable_flag) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_inlined3_ in + let _v = + let _5 = + let _1 = _1_inlined3 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 22546 "parsing/parser.ml" + + in + let _endpos__5_ = _endpos__1_inlined3_ in + let _4 = + let _1 = _1_inlined2 in + +# 3608 "parsing/parser.mly" + ( _1 ) +# 22555 "parsing/parser.ml" + + in + let _2 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _1 = +# 3936 "parsing/parser.mly" + ( _1 ) +# 22563 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 22571 "parsing/parser.ml" + + in + let _startpos__2_ = _startpos__1_inlined1_ in + let _endpos = _endpos__5_ in + let _symbolstartpos = if _startpos__1_ != _endpos__1_ then + _startpos__1_ + else + _startpos__2_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 3480 "parsing/parser.mly" + ( let info = symbol_info _endpos in + Type.field _2 _4 ~mut:_1 ~attrs:_5 ~loc:(make_loc _sloc) ~info ) +# 22585 "parsing/parser.ml" + : (Parsetree.label_declaration)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in + let _6 : unit = Obj.magic _6 in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in + let _3 : unit = Obj.magic _3 in + let _1_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 22648 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _1 : (Asttypes.mutable_flag) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_inlined4_ in + let _v = + let _7 = + let _1 = _1_inlined4 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 22660 "parsing/parser.ml" + + in + let _endpos__7_ = _endpos__1_inlined4_ in + let _5 = + let _1 = _1_inlined3 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 22669 "parsing/parser.ml" + + in + let _endpos__5_ = _endpos__1_inlined3_ in + let _4 = + let _1 = _1_inlined2 in + +# 3608 "parsing/parser.mly" + ( _1 ) +# 22678 "parsing/parser.ml" + + in + let _2 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _1 = +# 3936 "parsing/parser.mly" + ( _1 ) +# 22686 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 22694 "parsing/parser.ml" + + in + let _startpos__2_ = _startpos__1_inlined1_ in + let _endpos = _endpos__7_ in + let _symbolstartpos = if _startpos__1_ != _endpos__1_ then + _startpos__1_ + else + _startpos__2_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 3485 "parsing/parser.mly" + ( let info = + match rhs_info _endpos__5_ with + | Some _ as info_before_semi -> info_before_semi + | None -> symbol_info _endpos + in + Type.field _2 _4 ~mut:_1 ~attrs:(_5 @ _7) ~loc:(make_loc _sloc) ~info ) +# 22712 "parsing/parser.ml" + : (Parsetree.label_declaration)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.label_declaration) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.label_declaration list) = +# 3474 "parsing/parser.mly" + ( [_1] ) +# 22738 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.label_declaration) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.label_declaration list) = +# 3475 "parsing/parser.mly" + ( [_1] ) +# 22763 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22617,9 +22789,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.label_declaration list) = -# 3353 "parsing/parser.mly" +# 3476 "parsing/parser.mly" ( _1 :: _2 ) -# 22623 "parsing/parser.ml" +# 22795 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22638,9 +22810,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 22644 "parsing/parser.ml" +# 22816 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -22652,24 +22824,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22658 "parsing/parser.ml" +# 22830 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2389 "parsing/parser.mly" +# 2375 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 22667 "parsing/parser.ml" +# 22839 "parsing/parser.ml" in ( -# 2381 "parsing/parser.mly" +# 2367 "parsing/parser.mly" ( x ) -# 22673 "parsing/parser.ml" +# 22845 "parsing/parser.ml" : (string * Parsetree.pattern)) in { @@ -22703,9 +22875,9 @@ module Tables = struct let cty : (Parsetree.core_type) = Obj.magic cty in let _2 : unit = Obj.magic _2 in let _1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 22709 "parsing/parser.ml" +# 22881 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -22717,18 +22889,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22723 "parsing/parser.ml" +# 22895 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2389 "parsing/parser.mly" +# 2375 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 22732 "parsing/parser.ml" +# 22904 "parsing/parser.ml" in let _startpos_x_ = _startpos__1_ in @@ -22736,11 +22908,11 @@ module Tables = struct let _symbolstartpos = _startpos_x_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2383 "parsing/parser.mly" +# 2369 "parsing/parser.mly" ( let lab, pat = x in lab, mkpat ~loc:_sloc (Ppat_constraint (pat, cty)) ) -# 22744 "parsing/parser.ml" +# 22916 "parsing/parser.ml" : (string * Parsetree.pattern)) in { @@ -22764,9 +22936,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3876 "parsing/parser.mly" +# 4047 "parsing/parser.mly" ( _1 ) -# 22770 "parsing/parser.ml" +# 22942 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22789,9 +22961,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2662 "parsing/parser.mly" +# 2647 "parsing/parser.mly" ( (Nolabel, _1) ) -# 22795 "parsing/parser.ml" +# 22967 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22817,17 +22989,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : ( -# 784 "parsing/parser.mly" +# 772 "parsing/parser.mly" (string) -# 22823 "parsing/parser.ml" +# 22995 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2664 "parsing/parser.mly" +# 2649 "parsing/parser.mly" ( (Labelled _1, _2) ) -# 22831 "parsing/parser.ml" +# 23003 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22852,9 +23024,9 @@ module Tables = struct }; } = _menhir_stack in let label : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 22858 "parsing/parser.ml" +# 23030 "parsing/parser.ml" ) = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -22863,10 +23035,10 @@ module Tables = struct let _v = let _loc_label_ = (_startpos_label_, _endpos_label_) in ( -# 2666 "parsing/parser.mly" +# 2651 "parsing/parser.mly" ( let loc = _loc_label_ in (Labelled label, mkexpvar ~loc label) ) -# 22870 "parsing/parser.ml" +# 23042 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression)) in { @@ -22912,9 +23084,9 @@ module Tables = struct let _5 : unit = Obj.magic _5 in let ty : (Parsetree.type_constraint) = Obj.magic ty in let label : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 22918 "parsing/parser.ml" +# 23090 "parsing/parser.ml" ) = Obj.magic label in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -22925,10 +23097,10 @@ module Tables = struct let _endpos = _endpos__5_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in ( -# 2669 "parsing/parser.mly" +# 2654 "parsing/parser.mly" ( (Labelled label, mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_label_ label) ty) ) -# 22932 "parsing/parser.ml" +# 23104 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression)) in { @@ -22954,9 +23126,9 @@ module Tables = struct }; } = _menhir_stack in let label : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 22960 "parsing/parser.ml" +# 23132 "parsing/parser.ml" ) = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -22965,10 +23137,10 @@ module Tables = struct let _v = let _loc_label_ = (_startpos_label_, _endpos_label_) in ( -# 2672 "parsing/parser.mly" +# 2657 "parsing/parser.mly" ( let loc = _loc_label_ in (Optional label, mkexpvar ~loc label) ) -# 22972 "parsing/parser.ml" +# 23144 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression)) in { @@ -22995,17 +23167,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : ( -# 814 "parsing/parser.mly" +# 802 "parsing/parser.mly" (string) -# 23001 "parsing/parser.ml" +# 23173 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2675 "parsing/parser.mly" +# 2660 "parsing/parser.mly" ( (Optional _1, _2) ) -# 23009 "parsing/parser.ml" +# 23181 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23059,15 +23231,15 @@ module Tables = struct let _4 = let _1 = _1_inlined1 in -# 2377 "parsing/parser.mly" +# 2363 "parsing/parser.mly" ( _1 ) -# 23065 "parsing/parser.ml" +# 23237 "parsing/parser.ml" in ( -# 2351 "parsing/parser.mly" +# 2337 "parsing/parser.mly" ( (Optional (fst _3), _4, snd _3) ) -# 23071 "parsing/parser.ml" +# 23243 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern)) in { @@ -23093,9 +23265,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 23099 "parsing/parser.ml" +# 23271 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -23109,24 +23281,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23115 "parsing/parser.ml" +# 23287 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2389 "parsing/parser.mly" +# 2375 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 23124 "parsing/parser.ml" +# 23296 "parsing/parser.ml" in ( -# 2353 "parsing/parser.mly" +# 2339 "parsing/parser.mly" ( (Optional (fst _2), None, snd _2) ) -# 23130 "parsing/parser.ml" +# 23302 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern)) in { @@ -23174,9 +23346,9 @@ module Tables = struct let _3 : (Parsetree.pattern) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 814 "parsing/parser.mly" +# 802 "parsing/parser.mly" (string) -# 23180 "parsing/parser.ml" +# 23352 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -23185,15 +23357,15 @@ module Tables = struct let _4 = let _1 = _1_inlined1 in -# 2377 "parsing/parser.mly" +# 2363 "parsing/parser.mly" ( _1 ) -# 23191 "parsing/parser.ml" +# 23363 "parsing/parser.ml" in ( -# 2355 "parsing/parser.mly" +# 2341 "parsing/parser.mly" ( (Optional _1, _4, _3) ) -# 23197 "parsing/parser.ml" +# 23369 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern)) in { @@ -23220,17 +23392,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.pattern) = Obj.magic _2 in let _1 : ( -# 814 "parsing/parser.mly" +# 802 "parsing/parser.mly" (string) -# 23226 "parsing/parser.ml" +# 23398 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2357 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( (Optional _1, None, _2) ) -# 23234 "parsing/parser.ml" +# 23406 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23274,9 +23446,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2359 "parsing/parser.mly" +# 2345 "parsing/parser.mly" ( (Labelled (fst _3), None, snd _3) ) -# 23280 "parsing/parser.ml" +# 23452 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23301,9 +23473,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 23307 "parsing/parser.ml" +# 23479 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -23317,24 +23489,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23323 "parsing/parser.ml" +# 23495 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2389 "parsing/parser.mly" +# 2375 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 23332 "parsing/parser.ml" +# 23504 "parsing/parser.ml" in ( -# 2361 "parsing/parser.mly" +# 2347 "parsing/parser.mly" ( (Labelled (fst _2), None, snd _2) ) -# 23338 "parsing/parser.ml" +# 23510 "parsing/parser.ml" : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern)) in { @@ -23361,17 +23533,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.pattern) = Obj.magic _2 in let _1 : ( -# 784 "parsing/parser.mly" +# 772 "parsing/parser.mly" (string) -# 23367 "parsing/parser.ml" +# 23539 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2363 "parsing/parser.mly" +# 2349 "parsing/parser.mly" ( (Labelled _1, None, _2) ) -# 23375 "parsing/parser.ml" +# 23547 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23394,36 +23566,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2365 "parsing/parser.mly" +# 2351 "parsing/parser.mly" ( (Nolabel, None, _1) ) -# 23400 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Parsetree.pattern * Parsetree.expression * - Parsetree.value_constraint option) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Parsetree.pattern * Parsetree.expression * - Parsetree.value_constraint option * bool) = -# 2714 "parsing/parser.mly" - ( let p,e,c = _1 in (p,e,c,false) ) -# 23427 "parsing/parser.ml" +# 23572 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23432,74 +23577,47 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Asttypes.label) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _endpos = _endpos__1_ in - let _startpos = _startpos__1_ in - let _loc = (_startpos, _endpos) in - ( -# 2717 "parsing/parser.mly" - ( (mkpatvar ~loc:_loc _1, mkexpvar ~loc:_loc _1, None, true) ) -# 23456 "parsing/parser.ml" - : (Parsetree.pattern * Parsetree.expression * - Parsetree.value_constraint option * bool)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in - let _2 : (Parsetree.expression) = Obj.magic _2 in - let _1 : (Asttypes.label) = Obj.magic _1 in + let _1_inlined1 : (Parsetree.pattern) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in + let _endpos = _endpos__1_inlined1_ in let _v = - let _1 = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let _1 = _1_inlined1 in -# 2682 "parsing/parser.mly" - ( mkpatvar ~loc:_sloc _1 ) -# 23495 "parsing/parser.ml" +# 3112 "parsing/parser.mly" + ( None, _1 ) +# 23614 "parsing/parser.ml" in ( -# 2686 "parsing/parser.mly" - ( (_1, _2, None) ) -# 23501 "parsing/parser.ml" - : (Parsetree.pattern * Parsetree.expression * - Parsetree.value_constraint option)) +# 3140 "parsing/parser.mly" + ( _3 :: _1 ) +# 23620 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23512,14 +23630,14 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -23535,38 +23653,31 @@ module Tables = struct }; }; } = _menhir_stack in - let _4 : (Parsetree.expression) = Obj.magic _4 in - let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.type_constraint) = Obj.magic _2 in - let _1 : (Asttypes.label) = Obj.magic _1 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" + (string) +# 23661 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in + let _endpos = _endpos__2_inlined1_ in let _v = - let _1 = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let (_2, _1) = (_2_inlined1, _1_inlined1) in -# 2682 "parsing/parser.mly" - ( mkpatvar ~loc:_sloc _1 ) -# 23554 "parsing/parser.ml" +# 3114 "parsing/parser.mly" + ( Some _1, _2 ) +# 23674 "parsing/parser.ml" in ( -# 2688 "parsing/parser.mly" - ( let v = _1 in (* PR#7344 *) - let t = - match _2 with - Pconstraint t -> - Pvc_constraint { locally_abstract_univars = []; typ=t } - | Pcoerce (ground, coercion) -> Pvc_coercion { ground; coercion} - in - (v, _4, Some t) - ) -# 23568 "parsing/parser.ml" - : (Parsetree.pattern * Parsetree.expression * - Parsetree.value_constraint option)) +# 3140 "parsing/parser.mly" + ( _3 :: _1 ) +# 23680 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23579,105 +23690,55 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2_inlined1; - MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _5 : (Parsetree.expression) = Obj.magic _5 in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.core_type) = Obj.magic _3 in - let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 23720 "parsing/parser.ml" + ) = Obj.magic label in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in - let _1 : (Asttypes.label) = Obj.magic _1 in + let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos_label_ in let _v = let _3 = - let _1 = - let _1 = - let xs = -# 264 "" - ( List.rev xs ) -# 23641 "parsing/parser.ml" - in - -# 1086 "parsing/parser.mly" - ( xs ) -# 23646 "parsing/parser.ml" - - in - -# 3466 "parsing/parser.mly" - ( _1 ) -# 23652 "parsing/parser.ml" - - in - -# 3470 "parsing/parser.mly" - ( Ptyp_poly(_1, _3) ) -# 23658 "parsing/parser.ml" - - in - let _startpos__3_ = _startpos_xs_ in - let _1 = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2682 "parsing/parser.mly" - ( mkpatvar ~loc:_sloc _1 ) -# 23669 "parsing/parser.ml" +# 3116 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 23735 "parsing/parser.ml" in - let _loc__3_ = (_startpos__3_, _endpos__3_) in ( -# 2698 "parsing/parser.mly" - ( - let t = ghtyp ~loc:(_loc__3_) _3 in - (_1, _5, Some (Pvc_constraint { locally_abstract_univars = []; typ=t })) - ) -# 23679 "parsing/parser.ml" - : (Parsetree.pattern * Parsetree.expression * - Parsetree.value_constraint option)) +# 3140 "parsing/parser.mly" + ( _3 :: _1 ) +# 23741 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23690,34 +23751,34 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _8; - MenhirLib.EngineTypes.startp = _startpos__8_; - MenhirLib.EngineTypes.endp = _endpos__8_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _7; - MenhirLib.EngineTypes.startp = _startpos__7_; - MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -23737,42 +23798,40 @@ module Tables = struct }; }; } = _menhir_stack in - let _8 : (Parsetree.expression) = Obj.magic _8 in - let _7 : unit = Obj.magic _7 in - let _6 : (Parsetree.core_type) = Obj.magic _6 in - let _5 : unit = Obj.magic _5 in - let xs : (string Asttypes.loc list) = Obj.magic xs in - let _3 : unit = Obj.magic _3 in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 23808 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in - let _1 : (Asttypes.label) = Obj.magic _1 in + let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__8_ in + let _endpos = _endpos__6_ in let _v = - let _4 = -# 2679 "parsing/parser.mly" - ( xs ) -# 23756 "parsing/parser.ml" - in - let _1 = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2682 "parsing/parser.mly" - ( mkpatvar ~loc:_sloc _1 ) -# 23765 "parsing/parser.ml" +# 3119 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 23828 "parsing/parser.ml" in ( -# 2703 "parsing/parser.mly" - ( let constraint' = - Pvc_constraint { locally_abstract_univars=_4; typ = _6} - in - (_1, _8, Some constraint') ) -# 23774 "parsing/parser.ml" - : (Parsetree.pattern * Parsetree.expression * - Parsetree.value_constraint option)) +# 3140 "parsing/parser.mly" + ( _3 :: _1 ) +# 23834 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23785,9 +23844,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -23802,18 +23861,32 @@ module Tables = struct }; }; } = _menhir_stack in - let _3 : (Parsetree.expression) = Obj.magic _3 in + let _1_inlined1 : (Parsetree.pattern) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Parsetree.pattern * Parsetree.expression * - Parsetree.value_constraint option) = -# 2708 "parsing/parser.mly" - ( (_1, _3, None) ) -# 23816 "parsing/parser.ml" - in + let _endpos = _endpos__1_inlined1_ in + let _v = + let _3 = + let _1 = _1_inlined1 in + +# 3112 "parsing/parser.mly" + ( None, _1 ) +# 23877 "parsing/parser.ml" + + in + let _1 = +# 3126 "parsing/parser.mly" + ( None, _1 ) +# 23883 "parsing/parser.ml" + in + ( +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 23888 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -23825,49 +23898,60 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _5 : (Parsetree.expression) = Obj.magic _5 in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.core_type) = Obj.magic _3 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" + (string) +# 23929 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in - let _v : (Parsetree.pattern * Parsetree.expression * - Parsetree.value_constraint option) = -# 2710 "parsing/parser.mly" - ( (_1, _5, Some(Pvc_constraint { locally_abstract_univars=[]; typ=_3 })) ) -# 23870 "parsing/parser.ml" - in + let _endpos = _endpos__2_inlined1_ in + let _v = + let _3 = + let (_2, _1) = (_2_inlined1, _1_inlined1) in + +# 3114 "parsing/parser.mly" + ( Some _1, _2 ) +# 23942 "parsing/parser.ml" + + in + let _1 = +# 3126 "parsing/parser.mly" + ( None, _1 ) +# 23948 "parsing/parser.ml" + in + ( +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 23953 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -23879,87 +23963,158 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = body; - MenhirLib.EngineTypes.startp = _startpos_body_; - MenhirLib.EngineTypes.endp = _endpos_body_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = rec_flag; - MenhirLib.EngineTypes.startp = _startpos_rec_flag_; - MenhirLib.EngineTypes.endp = _endpos_rec_flag_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 23993 "parsing/parser.ml" + ) = Obj.magic label in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_label_ in + let _v = + let _3 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3116 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 24008 "parsing/parser.ml" + + in + let _1 = +# 3126 "parsing/parser.mly" + ( None, _1 ) +# 24014 "parsing/parser.ml" + in + ( +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 24019 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; }; }; }; }; }; } = _menhir_stack in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let body : (Parsetree.pattern * Parsetree.expression * - Parsetree.value_constraint option * bool) = Obj.magic body in - let rec_flag : (Asttypes.rec_flag) = Obj.magic rec_flag in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let ext : (string Asttypes.loc option) = Obj.magic ext in - let _1 : unit = Obj.magic _1 in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 24086 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined2_ in + let _endpos = _endpos__6_ in let _v = - let _1 = - let attrs2 = - let _1 = _1_inlined2 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 23935 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined2_ in - let attrs1 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 23944 "parsing/parser.ml" - - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2737 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) - ) -# 23956 "parsing/parser.ml" +# 3119 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 24106 "parsing/parser.ml" in + let _1 = +# 3126 "parsing/parser.mly" + ( None, _1 ) +# 24112 "parsing/parser.ml" + in ( -# 2727 "parsing/parser.mly" - ( _1 ) -# 23962 "parsing/parser.ml" - : (let_bindings)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 24117 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23972,27 +24127,63 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; }; } = _menhir_stack in - let _2 : (let_binding) = Obj.magic _2 in - let _1 : (let_bindings) = Obj.magic _1 in + let _1_inlined1 : (Parsetree.pattern) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1 : ( +# 772 "parsing/parser.mly" + (string) +# 24160 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (let_bindings) = -# 2728 "parsing/parser.mly" - ( addlb _1 _2 ) -# 23995 "parsing/parser.ml" - in + let _endpos = _endpos__1_inlined1_ in + let _v = + let _3 = + let _1 = _1_inlined1 in + +# 3112 "parsing/parser.mly" + ( None, _1 ) +# 24171 "parsing/parser.ml" + + in + let _1 = + let _2 = _2_inlined1 in + +# 3128 "parsing/parser.mly" + ( Some _1, _2 ) +# 24179 "parsing/parser.ml" + + in + ( +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 24185 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -24004,24 +24195,24 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _2_inlined2; + MenhirLib.EngineTypes.startp = _startpos__2_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = body; - MenhirLib.EngineTypes.startp = _startpos_body_; - MenhirLib.EngineTypes.endp = _endpos_body_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = rec_flag; - MenhirLib.EngineTypes.startp = _startpos_rec_flag_; - MenhirLib.EngineTypes.endp = _endpos_rec_flag_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -24033,56 +24224,44 @@ module Tables = struct }; }; } = _menhir_stack in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let body : (Parsetree.pattern * Parsetree.expression * - Parsetree.value_constraint option * bool) = Obj.magic body in - let rec_flag : (Asttypes.rec_flag) = Obj.magic rec_flag in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let _2_inlined2 : (Parsetree.pattern) = Obj.magic _2_inlined2 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" + (string) +# 24232 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1 : ( +# 772 "parsing/parser.mly" + (string) +# 24239 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined2_ in + let _endpos = _endpos__2_inlined2_ in let _v = + let _3 = + let (_2, _1) = (_2_inlined2, _1_inlined1) in + +# 3114 "parsing/parser.mly" + ( Some _1, _2 ) +# 24250 "parsing/parser.ml" + + in let _1 = - let attrs2 = - let _1 = _1_inlined2 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 24053 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined2_ in - let attrs1 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 24062 "parsing/parser.ml" - - in - let ext = -# 4121 "parsing/parser.mly" - ( None ) -# 24068 "parsing/parser.ml" - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _2 = _2_inlined1 in -# 2737 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) - ) -# 24079 "parsing/parser.ml" +# 3128 "parsing/parser.mly" + ( Some _1, _2 ) +# 24258 "parsing/parser.ml" in ( -# 2727 "parsing/parser.mly" - ( _1 ) -# 24085 "parsing/parser.ml" - : (let_bindings)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 24264 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24095,105 +24274,74 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = body; - MenhirLib.EngineTypes.startp = _startpos_body_; - MenhirLib.EngineTypes.endp = _endpos_body_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = rec_flag; - MenhirLib.EngineTypes.startp = _startpos_rec_flag_; - MenhirLib.EngineTypes.endp = _endpos_rec_flag_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; }; } = _menhir_stack in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let body : (Parsetree.pattern * Parsetree.expression * - Parsetree.value_constraint option * bool) = Obj.magic body in - let rec_flag : (Asttypes.rec_flag) = Obj.magic rec_flag in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _2 : (Ast_helper.str) = Obj.magic _2 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 24310 "parsing/parser.ml" + ) = Obj.magic label in let _1_inlined1 : unit = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let _2 : unit = Obj.magic _2 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1 : ( +# 772 "parsing/parser.mly" + (string) +# 24318 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined3_ in + let _endpos = _endpos_label_ in let _v = + let _3 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3116 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 24330 "parsing/parser.ml" + + in let _1 = - let attrs2 = - let _1 = _1_inlined3 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 24158 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined3_ in - let attrs1 = - let _1 = _1_inlined2 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 24167 "parsing/parser.ml" - - in - let ext = - let _startpos__1_ = _startpos__1_inlined1_ in - let _endpos = _endpos__2_ in - let _startpos = _startpos__1_ in - let _loc = (_startpos, _endpos) in - -# 4123 "parsing/parser.mly" - ( not_expecting _loc "extension" ) -# 24178 "parsing/parser.ml" - - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _2 = _2_inlined1 in -# 2737 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) - ) -# 24190 "parsing/parser.ml" +# 3128 "parsing/parser.mly" + ( Some _1, _2 ) +# 24338 "parsing/parser.ml" in ( -# 2727 "parsing/parser.mly" - ( _1 ) -# 24196 "parsing/parser.ml" - : (let_bindings)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 24344 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24206,52 +24354,107 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined2; + MenhirLib.EngineTypes.startp = _startpos__2_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; }; } = _menhir_stack in - let _2 : (let_binding) = Obj.magic _2 in - let _1 : (let_bindings) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (let_bindings) = -# 2728 "parsing/parser.mly" - ( addlb _1 _2 ) -# 24229 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 24417 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined2 : unit = Obj.magic _2_inlined2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1 : ( +# 772 "parsing/parser.mly" + (string) +# 24426 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Parsetree.pattern) = -# 2393 "parsing/parser.mly" - ( _1 ) -# 24254 "parsing/parser.ml" - in + let _endpos = _endpos__6_ in + let _v = + let _3 = + let _startpos__2_ = _startpos__2_inlined2_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3119 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 24442 "parsing/parser.ml" + + in + let _1 = + let _2 = _2_inlined1 in + +# 3128 "parsing/parser.mly" + ( Some _1, _2 ) +# 24450 "parsing/parser.ml" + + in + ( +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 24456 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -24263,51 +24466,63 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; MenhirLib.EngineTypes.startp = _startpos__2_; MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; } = _menhir_stack in - let _3 : (Parsetree.core_type) = Obj.magic _3 in + let _1_inlined1 : (Parsetree.pattern) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 24498 "parsing/parser.ml" + ) = Obj.magic label in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _endpos = _endpos__1_inlined1_ in let _v = + let _3 = + let _1 = _1_inlined1 in + +# 3112 "parsing/parser.mly" + ( None, _1 ) +# 24510 "parsing/parser.ml" + + in let _1 = - let _1 = -# 2395 "parsing/parser.mly" - ( Ppat_constraint(_1, _3) ) -# 24295 "parsing/parser.ml" - in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 24304 "parsing/parser.ml" +# 3130 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 24519 "parsing/parser.ml" in ( -# 2396 "parsing/parser.mly" - ( _1 ) -# 24310 "parsing/parser.ml" - : (Parsetree.pattern)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 24525 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24320,38 +24535,74 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = exp; - MenhirLib.EngineTypes.startp = _startpos_exp_; - MenhirLib.EngineTypes.endp = _endpos_exp_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; } = _menhir_stack in - let exp : (Parsetree.expression) = Obj.magic exp in - let _1 : (Asttypes.label) = Obj.magic _1 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" + (string) +# 24572 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 24578 "parsing/parser.ml" + ) = Obj.magic label in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_exp_ in + let _endpos = _endpos__2_inlined1_ in let _v = - let pat = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let (_2, _1) = (_2_inlined1, _1_inlined1) in -# 2682 "parsing/parser.mly" - ( mkpatvar ~loc:_sloc _1 ) -# 24348 "parsing/parser.ml" +# 3114 "parsing/parser.mly" + ( Some _1, _2 ) +# 24590 "parsing/parser.ml" + + in + let _1 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3130 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 24599 "parsing/parser.ml" in ( -# 2754 "parsing/parser.mly" - ( (pat, exp) ) -# 24354 "parsing/parser.ml" - : (Parsetree.pattern * Parsetree.expression)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 24605 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24363,25 +24614,77 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label_inlined1; + MenhirLib.EngineTypes.startp = _startpos_label_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_label_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; } = _menhir_stack in - let _1 : (Asttypes.label) = Obj.magic _1 in + let label_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 24651 "parsing/parser.ml" + ) = Obj.magic label_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 24658 "parsing/parser.ml" + ) = Obj.magic label in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _endpos = _endpos_label_inlined1_ in let _v = - let _endpos = _endpos__1_ in - let _startpos = _startpos__1_ in - let _loc = (_startpos, _endpos) in + let _3 = + let (_endpos_label_, _startpos_label_, label) = (_endpos_label_inlined1_, _startpos_label_inlined1_, label_inlined1) in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3116 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 24672 "parsing/parser.ml" + + in + let _1 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3130 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 24681 "parsing/parser.ml" + + in ( -# 2757 "parsing/parser.mly" - ( (mkpatvar ~loc:_loc _1, mkexpvar ~loc:_loc _1) ) -# 24384 "parsing/parser.ml" - : (Parsetree.pattern * Parsetree.expression)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 24687 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24394,49 +24697,108 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = exp; - MenhirLib.EngineTypes.startp = _startpos_exp_; - MenhirLib.EngineTypes.endp = _endpos_exp_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = typ; - MenhirLib.EngineTypes.startp = _startpos_typ_; - MenhirLib.EngineTypes.endp = _endpos_typ_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = label_inlined1; + MenhirLib.EngineTypes.startp = _startpos_label_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_label_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = pat; - MenhirLib.EngineTypes.startp = _startpos_pat_; - MenhirLib.EngineTypes.endp = _endpos_pat_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; }; }; }; }; } = _menhir_stack in - let exp : (Parsetree.expression) = Obj.magic exp in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in let _4 : unit = Obj.magic _4 in - let typ : (Parsetree.core_type) = Obj.magic typ in + let label_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 24760 "parsing/parser.ml" + ) = Obj.magic label_inlined1 in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in - let pat : (Parsetree.pattern) = Obj.magic pat in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 24768 "parsing/parser.ml" + ) = Obj.magic label in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_pat_ in - let _endpos = _endpos_exp_ in - let _v : (Parsetree.pattern * Parsetree.expression) = -# 2759 "parsing/parser.mly" - ( let loc = (_startpos_pat_, _endpos_typ_) in - (ghpat ~loc (Ppat_constraint(pat, typ)), exp) ) -# 24439 "parsing/parser.ml" - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__6_ in + let _v = + let _3 = + let (_endpos_label_, _startpos_label_, _startpos__2_, label) = (_endpos_label_inlined1_, _startpos_label_inlined1_, _startpos__2_inlined1_, label_inlined1) in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3119 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 24785 "parsing/parser.ml" + + in + let _1 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3130 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 24794 "parsing/parser.ml" + + in + ( +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 24800 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -24448,140 +24810,96 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = exp; - MenhirLib.EngineTypes.startp = _startpos_exp_; - MenhirLib.EngineTypes.endp = _endpos_exp_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; MenhirLib.EngineTypes.startp = _startpos__2_; MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = pat; - MenhirLib.EngineTypes.startp = _startpos_pat_; - MenhirLib.EngineTypes.endp = _endpos_pat_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; }; }; } = _menhir_stack in - let exp : (Parsetree.expression) = Obj.magic exp in + let _1_inlined1 : (Parsetree.pattern) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in - let pat : (Parsetree.pattern) = Obj.magic pat in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 24869 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_pat_ in - let _endpos = _endpos_exp_ in - let _v : (Parsetree.pattern * Parsetree.expression) = -# 2762 "parsing/parser.mly" - ( (pat, exp) ) -# 24478 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = body; - MenhirLib.EngineTypes.startp = _startpos_body_; - MenhirLib.EngineTypes.endp = _endpos_body_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let body : (Parsetree.pattern * Parsetree.expression) = Obj.magic body in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_body_ in - let _endpos = _endpos_body_ in - let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = -# 2766 "parsing/parser.mly" - ( let let_pat, let_exp = body in - let_pat, let_exp, [] ) -# 24504 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = body; - MenhirLib.EngineTypes.startp = _startpos_body_; - MenhirLib.EngineTypes.endp = _endpos_body_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = bindings; - MenhirLib.EngineTypes.startp = _startpos_bindings_; - MenhirLib.EngineTypes.endp = _endpos_bindings_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let body : (Parsetree.pattern * Parsetree.expression) = Obj.magic body in - let _1 : ( -# 780 "parsing/parser.mly" - (string) -# 24538 "parsing/parser.ml" - ) = Obj.magic _1 in - let bindings : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = Obj.magic bindings in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_bindings_ in - let _endpos = _endpos_body_ in - let _v = - let pbop_op = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 24552 "parsing/parser.ml" - - in - let _endpos = _endpos_body_ in - let _symbolstartpos = _startpos_bindings_ in - let _sloc = (_symbolstartpos, _endpos) in - ( -# 2769 "parsing/parser.mly" - ( let let_pat, let_exp, rev_ands = bindings in - let pbop_pat, pbop_exp = body in - let pbop_loc = make_loc _sloc in - let and_ = {pbop_op; pbop_pat; pbop_exp; pbop_loc} in - let_pat, let_exp, and_ :: rev_ands ) -# 24565 "parsing/parser.ml" - : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.class_declaration list) = -# 216 "" - ( [] ) -# 24584 "parsing/parser.ml" - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_inlined1_ in + let _v = + let _3 = + let _1 = _1_inlined1 in + +# 3112 "parsing/parser.mly" + ( None, _1 ) +# 24882 "parsing/parser.ml" + + in + let _1 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3133 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 24895 "parsing/parser.ml" + + in + ( +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 24901 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -24593,45 +24911,51 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _2_inlined2; + MenhirLib.EngineTypes.startp = _startpos__2_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = body; - MenhirLib.EngineTypes.startp = _startpos_body_; - MenhirLib.EngineTypes.endp = _endpos_body_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = params; - MenhirLib.EngineTypes.startp = _startpos_params_; - MenhirLib.EngineTypes.endp = _endpos_params_; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = virt; - MenhirLib.EngineTypes.startp = _startpos_virt_; - MenhirLib.EngineTypes.endp = _endpos_virt_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; }; @@ -24640,71 +24964,53 @@ module Tables = struct }; }; } = _menhir_stack in - let xs : (Parsetree.class_declaration list) = Obj.magic xs in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let body : (Parsetree.class_expr) = Obj.magic body in - let _1_inlined2 : ( -# 797 "parsing/parser.mly" + let _2_inlined2 : (Parsetree.pattern) = Obj.magic _2_inlined2 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" (string) -# 24650 "parsing/parser.ml" - ) = Obj.magic _1_inlined2 in - let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in - let virt : (Asttypes.virtual_flag) = Obj.magic virt in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in +# 24972 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 24981 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__2_inlined2_ in let _v = - let x = - let attrs2 = - let _1 = _1_inlined3 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 24666 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined3_ in - let id = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 24678 "parsing/parser.ml" - - in - let attrs1 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 24686 "parsing/parser.ml" - - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let (_2, _1) = (_2_inlined2, _1_inlined1) in -# 1966 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let docs = symbol_docs _sloc in - let text = symbol_text _symbolstartpos in - Ci.mk id body ~virt ~params ~attrs ~loc ~text ~docs - ) -# 24701 "parsing/parser.ml" +# 3114 "parsing/parser.mly" + ( Some _1, _2 ) +# 24994 "parsing/parser.ml" + + in + let _1 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3133 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 25007 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 24707 "parsing/parser.ml" - : (Parsetree.class_declaration list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 25013 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24713,41 +25019,23 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.class_description list) = -# 216 "" - ( [] ) -# 24726 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = label_inlined1; + MenhirLib.EngineTypes.startp = _startpos_label_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_label_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = cty; - MenhirLib.EngineTypes.startp = _startpos_cty_; - MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _6; @@ -24755,24 +25043,24 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = params; - MenhirLib.EngineTypes.startp = _startpos_params_; - MenhirLib.EngineTypes.endp = _endpos_params_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = virt; - MenhirLib.EngineTypes.startp = _startpos_virt_; - MenhirLib.EngineTypes.endp = _endpos_virt_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -24788,72 +25076,55 @@ module Tables = struct }; }; } = _menhir_stack in - let xs : (Parsetree.class_description list) = Obj.magic xs in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let cty : (Parsetree.class_type) = Obj.magic cty in + let label_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 25083 "parsing/parser.ml" + ) = Obj.magic label_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in let _6 : unit = Obj.magic _6 in - let _1_inlined2 : ( -# 797 "parsing/parser.mly" + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" (string) -# 24799 "parsing/parser.ml" - ) = Obj.magic _1_inlined2 in - let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in - let virt : (Asttypes.virtual_flag) = Obj.magic virt in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in +# 25093 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos_label_inlined1_ in let _v = - let x = - let attrs2 = - let _1 = _1_inlined3 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 24815 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined3_ in - let id = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 24827 "parsing/parser.ml" - - in - let attrs1 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 24835 "parsing/parser.ml" - - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let (_endpos_label_, _startpos_label_, label) = (_endpos_label_inlined1_, _startpos_label_inlined1_, label_inlined1) in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2257 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let docs = symbol_docs _sloc in - let text = symbol_text _symbolstartpos in - Ci.mk id cty ~virt ~params ~attrs ~loc ~text ~docs - ) -# 24850 "parsing/parser.ml" +# 3116 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 25108 "parsing/parser.ml" + + in + let _1 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3133 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 25121 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 24856 "parsing/parser.ml" - : (Parsetree.class_description list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 25127 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24862,72 +25133,78 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.class_type_declaration list) = -# 216 "" - ( [] ) -# 24875 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _6_inlined1; + MenhirLib.EngineTypes.startp = _startpos__6_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__6_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = cty_inlined1; + MenhirLib.EngineTypes.startp = _startpos_cty_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_cty_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = csig; - MenhirLib.EngineTypes.startp = _startpos_csig_; - MenhirLib.EngineTypes.endp = _endpos_csig_; + MenhirLib.EngineTypes.semv = _4_inlined1; + MenhirLib.EngineTypes.startp = _startpos__4_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__4_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.semv = label_inlined1; + MenhirLib.EngineTypes.startp = _startpos_label_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_label_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _2_inlined2; + MenhirLib.EngineTypes.startp = _startpos__2_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = params; - MenhirLib.EngineTypes.startp = _startpos_params_; - MenhirLib.EngineTypes.endp = _endpos_params_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = virt; - MenhirLib.EngineTypes.startp = _startpos_virt_; - MenhirLib.EngineTypes.endp = _endpos_virt_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; }; }; }; @@ -24937,72 +25214,62 @@ module Tables = struct }; }; } = _menhir_stack in - let xs : (Parsetree.class_type_declaration list) = Obj.magic xs in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let csig : (Parsetree.class_type) = Obj.magic csig in + let _6_inlined1 : unit = Obj.magic _6_inlined1 in + let cty_inlined1 : (Parsetree.core_type) = Obj.magic cty_inlined1 in + let _4_inlined1 : unit = Obj.magic _4_inlined1 in + let label_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 25224 "parsing/parser.ml" + ) = Obj.magic label_inlined1 in + let _2_inlined2 : unit = Obj.magic _2_inlined2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in let _6 : unit = Obj.magic _6 in - let _1_inlined2 : ( -# 797 "parsing/parser.mly" + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" (string) -# 24948 "parsing/parser.ml" - ) = Obj.magic _1_inlined2 in - let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in - let virt : (Asttypes.virtual_flag) = Obj.magic virt in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in +# 25235 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__6_inlined1_ in let _v = - let x = - let attrs2 = - let _1 = _1_inlined3 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 24964 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined3_ in - let id = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 24976 "parsing/parser.ml" - - in - let attrs1 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 24984 "parsing/parser.ml" - - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let (_endpos_label_, _startpos_label_, _endpos__6_, _startpos__2_, cty, label) = (_endpos_label_inlined1_, _startpos_label_inlined1_, _endpos__6_inlined1_, _startpos__2_inlined2_, cty_inlined1, label_inlined1) in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2296 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let docs = symbol_docs _sloc in - let text = symbol_text _symbolstartpos in - Ci.mk id csig ~virt ~params ~attrs ~loc ~text ~docs - ) -# 24999 "parsing/parser.ml" +# 3119 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 25253 "parsing/parser.ml" + + in + let _1 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3133 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 25266 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 25005 "parsing/parser.ml" - : (Parsetree.class_type_declaration list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 25272 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25013,15 +25280,39 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.module_binding list) = -# 216 "" - ( [] ) -# 25024 "parsing/parser.ml" - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _loc__3_ = (_startpos__3_, _endpos__3_) in + ( +# 3144 "parsing/parser.mly" + ( expecting _loc__3_ "pattern" ) +# 25314 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -25033,100 +25324,43 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = body; - MenhirLib.EngineTypes.startp = _startpos_body_; - MenhirLib.EngineTypes.endp = _endpos_body_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - } = _menhir_stack in - let xs : (Parsetree.module_binding list) = Obj.magic xs in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let body : (Parsetree.module_expr) = Obj.magic body in - let _1_inlined2 : (string option) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _1_inlined1 : (Parsetree.pattern) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__1_inlined1_ in let _v = - let x = - let attrs2 = - let _1 = _1_inlined3 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 25088 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined3_ in - let name = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 25100 "parsing/parser.ml" - - in - let attrs1 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 25108 "parsing/parser.ml" - - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let _1 = _1_inlined1 in -# 1624 "parsing/parser.mly" - ( - let loc = make_loc _sloc in - let attrs = attrs1 @ attrs2 in - let docs = symbol_docs _sloc in - let text = symbol_text _symbolstartpos in - Mb.mk name body ~attrs ~loc ~text ~docs - ) -# 25123 "parsing/parser.ml" +# 3112 "parsing/parser.mly" + ( None, _1 ) +# 25357 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 25129 "parsing/parser.ml" - : (Parsetree.module_binding list)) +# 3140 "parsing/parser.mly" + ( _3 :: _1 ) +# 25363 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25137,15 +25371,57 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" + (string) +# 25404 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.module_declaration list) = -# 216 "" - ( [] ) -# 25148 "parsing/parser.ml" - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_inlined1_ in + let _v = + let _3 = + let (_2, _1) = (_2_inlined1, _1_inlined1) in + +# 3114 "parsing/parser.mly" + ( Some _1, _2 ) +# 25417 "parsing/parser.ml" + + in + ( +# 3140 "parsing/parser.mly" + ( _3 :: _1 ) +# 25423 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -25157,40 +25433,107 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = mty; - MenhirLib.EngineTypes.startp = _startpos_mty_; - MenhirLib.EngineTypes.endp = _endpos_mty_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 25463 "parsing/parser.ml" + ) = Obj.magic label in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_label_ in + let _v = + let _3 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3116 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 25478 "parsing/parser.ml" + + in + ( +# 3140 "parsing/parser.mly" + ( _3 :: _1 ) +# 25484 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined1; MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; }; @@ -25198,66 +25541,40 @@ module Tables = struct }; }; } = _menhir_stack in - let xs : (Parsetree.module_declaration list) = Obj.magic xs in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let mty : (Parsetree.module_type) = Obj.magic mty in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in let _4 : unit = Obj.magic _4 in - let _1_inlined2 : (string option) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 25551 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__6_ in let _v = - let x = - let attrs2 = - let _1 = _1_inlined3 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 25219 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined3_ in - let name = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 25231 "parsing/parser.ml" - - in - let attrs1 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 25239 "parsing/parser.ml" - - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 1907 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - let docs = symbol_docs _sloc in - let loc = make_loc _sloc in - let text = symbol_text _symbolstartpos in - Md.mk name mty ~attrs ~loc ~text ~docs - ) -# 25254 "parsing/parser.ml" +# 3119 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 25571 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 25260 "parsing/parser.ml" - : (Parsetree.module_declaration list)) +# 3140 "parsing/parser.mly" + ( _3 :: _1 ) +# 25577 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25268,15 +25585,51 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _1_inlined1 : (Parsetree.pattern) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.attributes) = -# 216 "" - ( [] ) -# 25279 "parsing/parser.ml" - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_inlined1_ in + let _v = + let _3 = + let _1 = _1_inlined1 in + +# 3112 "parsing/parser.mly" + ( None, _1 ) +# 25620 "parsing/parser.ml" + + in + let _1 = +# 3126 "parsing/parser.mly" + ( None, _1 ) +# 25626 "parsing/parser.ml" + in + ( +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 25631 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -25288,27 +25641,60 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; }; } = _menhir_stack in - let xs : (Parsetree.attributes) = Obj.magic xs in - let x : (Parsetree.attribute) = Obj.magic x in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" + (string) +# 25672 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos_xs_ in - let _v : (Parsetree.attributes) = -# 219 "" - ( x :: xs ) -# 25311 "parsing/parser.ml" - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_inlined1_ in + let _v = + let _3 = + let (_2, _1) = (_2_inlined1, _1_inlined1) in + +# 3114 "parsing/parser.mly" + ( Some _1, _2 ) +# 25685 "parsing/parser.ml" + + in + let _1 = +# 3126 "parsing/parser.mly" + ( None, _1 ) +# 25691 "parsing/parser.ml" + in + ( +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 25696 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -25318,15 +25704,63 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 25736 "parsing/parser.ml" + ) = Obj.magic label in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.type_declaration list) = -# 216 "" - ( [] ) -# 25329 "parsing/parser.ml" - in + let _startpos = _startpos__1_ in + let _endpos = _endpos_label_ in + let _v = + let _3 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3116 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 25751 "parsing/parser.ml" + + in + let _1 = +# 3126 "parsing/parser.mly" + ( None, _1 ) +# 25757 "parsing/parser.ml" + in + ( +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 25762 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -25338,39 +25772,39 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs_inlined1; - MenhirLib.EngineTypes.startp = _startpos_xs_inlined1_; - MenhirLib.EngineTypes.endp = _endpos_xs_inlined1_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = kind_priv_manifest; - MenhirLib.EngineTypes.startp = _startpos_kind_priv_manifest_; - MenhirLib.EngineTypes.endp = _endpos_kind_priv_manifest_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = params; - MenhirLib.EngineTypes.startp = _startpos_params_; - MenhirLib.EngineTypes.endp = _endpos_params_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -25385,92 +25819,45 @@ module Tables = struct }; }; } = _menhir_stack in - let xs : (Parsetree.type_declaration list) = Obj.magic xs in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let xs_inlined1 : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs_inlined1 in - let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in - let _1_inlined2 : ( -# 797 "parsing/parser.mly" + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" (string) -# 25396 "parsing/parser.ml" - ) = Obj.magic _1_inlined2 in - let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in +# 25829 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__6_ in let _v = - let x = - let xs = xs_inlined1 in - let attrs2 = - let _1 = _1_inlined3 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 25412 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined3_ in - let cstrs = - let _1 = - let xs = -# 264 "" - ( List.rev xs ) -# 25421 "parsing/parser.ml" - in - -# 1068 "parsing/parser.mly" - ( xs ) -# 25426 "parsing/parser.ml" - - in - -# 3183 "parsing/parser.mly" - ( _1 ) -# 25432 "parsing/parser.ml" - - in - let id = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 25443 "parsing/parser.ml" - - in - let attrs1 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 25451 "parsing/parser.ml" - - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3172 "parsing/parser.mly" - ( - let (kind, priv, manifest) = kind_priv_manifest in - let docs = symbol_docs _sloc in - let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let text = symbol_text _symbolstartpos in - Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text - ) -# 25467 "parsing/parser.ml" +# 3119 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 25849 "parsing/parser.ml" in + let _1 = +# 3126 "parsing/parser.mly" + ( None, _1 ) +# 25855 "parsing/parser.ml" + in ( -# 219 "" - ( x :: xs ) -# 25473 "parsing/parser.ml" - : (Parsetree.type_declaration list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 25860 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25479,173 +25866,66 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.type_declaration list) = -# 216 "" - ( [] ) -# 25492 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs_inlined1; - MenhirLib.EngineTypes.startp = _startpos_xs_inlined1_; - MenhirLib.EngineTypes.endp = _endpos_xs_inlined1_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = params; - MenhirLib.EngineTypes.startp = _startpos_params_; - MenhirLib.EngineTypes.endp = _endpos_params_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let xs : (Parsetree.type_declaration list) = Obj.magic xs in - let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let xs_inlined1 : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs_inlined1 in - let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in - let _1_inlined3 : unit = Obj.magic _1_inlined3 in - let _1_inlined2 : ( -# 797 "parsing/parser.mly" + let _1_inlined1 : (Parsetree.pattern) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1 : ( +# 772 "parsing/parser.mly" (string) -# 25566 "parsing/parser.ml" - ) = Obj.magic _1_inlined2 in - let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in +# 25903 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__1_inlined1_ in let _v = - let x = - let xs = xs_inlined1 in - let attrs2 = - let _1 = _1_inlined4 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 25582 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined4_ in - let cstrs = - let _1 = - let xs = -# 264 "" - ( List.rev xs ) -# 25591 "parsing/parser.ml" - in - -# 1068 "parsing/parser.mly" - ( xs ) -# 25596 "parsing/parser.ml" - - in - -# 3183 "parsing/parser.mly" - ( _1 ) -# 25602 "parsing/parser.ml" - - in - let kind_priv_manifest = -# 3218 "parsing/parser.mly" - ( _2 ) -# 25608 "parsing/parser.ml" - in - let id = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 25618 "parsing/parser.ml" - - in - let attrs1 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 25626 "parsing/parser.ml" - - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let _1 = _1_inlined1 in -# 3172 "parsing/parser.mly" - ( - let (kind, priv, manifest) = kind_priv_manifest in - let docs = symbol_docs _sloc in - let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let text = symbol_text _symbolstartpos in - Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text - ) -# 25642 "parsing/parser.ml" +# 3112 "parsing/parser.mly" + ( None, _1 ) +# 25914 "parsing/parser.ml" + + in + let _1 = + let _2 = _2_inlined1 in + +# 3128 "parsing/parser.mly" + ( Some _1, _2 ) +# 25922 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 25648 "parsing/parser.ml" - : (Parsetree.type_declaration list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 25928 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25654,67 +25934,78 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.attributes) = -# 216 "" - ( [] ) -# 25667 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _2_inlined2; + MenhirLib.EngineTypes.startp = _startpos__2_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; } = _menhir_stack in - let xs : (Parsetree.attributes) = Obj.magic xs in - let x : (Parsetree.attribute) = Obj.magic x in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos_xs_ in - let _v : (Parsetree.attributes) = -# 219 "" - ( x :: xs ) -# 25699 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _2_inlined2 : (Parsetree.pattern) = Obj.magic _2_inlined2 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" + (string) +# 25975 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1 : ( +# 772 "parsing/parser.mly" + (string) +# 25982 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.signature_item list list) = -# 216 "" - ( [] ) -# 25717 "parsing/parser.ml" - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_inlined2_ in + let _v = + let _3 = + let (_2, _1) = (_2_inlined2, _1_inlined1) in + +# 3114 "parsing/parser.mly" + ( Some _1, _2 ) +# 25993 "parsing/parser.ml" + + in + let _1 = + let _2 = _2_inlined1 in + +# 3128 "parsing/parser.mly" + ( Some _1, _2 ) +# 26001 "parsing/parser.ml" + + in + ( +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 26007 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -25726,43 +26017,74 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; } = _menhir_stack in - let xs : (Parsetree.signature_item list list) = Obj.magic xs in - let _1 : unit = Obj.magic _1 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 26053 "parsing/parser.ml" + ) = Obj.magic label in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1 : ( +# 772 "parsing/parser.mly" + (string) +# 26061 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos_label_ in let _v = - let x = - let _1 = - let _startpos = _startpos__1_ in - -# 994 "parsing/parser.mly" - ( text_sig _startpos ) -# 25753 "parsing/parser.ml" - - in + let _3 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 1764 "parsing/parser.mly" - ( _1 ) -# 25759 "parsing/parser.ml" +# 3116 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 26073 "parsing/parser.ml" + + in + let _1 = + let _2 = _2_inlined1 in + +# 3128 "parsing/parser.mly" + ( Some _1, _2 ) +# 26081 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 25765 "parsing/parser.ml" - : (Parsetree.signature_item list list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 26087 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25775,43 +26097,106 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined2; + MenhirLib.EngineTypes.startp = _startpos__2_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; }; } = _menhir_stack in - let xs : (Parsetree.signature_item list list) = Obj.magic xs in - let _1 : (Parsetree.signature_item) = Obj.magic _1 in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 26160 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined2 : unit = Obj.magic _2_inlined2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1 : ( +# 772 "parsing/parser.mly" + (string) +# 26169 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__6_ in let _v = - let x = - let _1 = - let _startpos = _startpos__1_ in - -# 992 "parsing/parser.mly" - ( text_sig _startpos @ [_1] ) -# 25802 "parsing/parser.ml" - - in + let _3 = + let _startpos__2_ = _startpos__2_inlined2_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 1764 "parsing/parser.mly" - ( _1 ) -# 25808 "parsing/parser.ml" +# 3119 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 26185 "parsing/parser.ml" + + in + let _1 = + let _2 = _2_inlined1 in + +# 3128 "parsing/parser.mly" + ( Some _1, _2 ) +# 26193 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 25814 "parsing/parser.ml" - : (Parsetree.signature_item list list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 26199 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25820,84 +26205,67 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.structure_item list list) = -# 216 "" - ( [] ) -# 25833 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; }; } = _menhir_stack in - let xs : (Parsetree.structure_item list list) = Obj.magic xs in + let _1_inlined1 : (Parsetree.pattern) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 26241 "parsing/parser.ml" + ) = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__1_inlined1_ in let _v = - let x = - let _1 = - let ys = - let items = -# 1054 "parsing/parser.mly" - ( [] ) -# 25869 "parsing/parser.ml" - in - -# 1505 "parsing/parser.mly" - ( items ) -# 25874 "parsing/parser.ml" - - in - let xs = - let _startpos = _startpos__1_ in - -# 990 "parsing/parser.mly" - ( text_str _startpos ) -# 25882 "parsing/parser.ml" - - in - -# 278 "" - ( xs @ ys ) -# 25888 "parsing/parser.ml" - - in + let _3 = + let _1 = _1_inlined1 in -# 1521 "parsing/parser.mly" - ( _1 ) -# 25894 "parsing/parser.ml" +# 3112 "parsing/parser.mly" + ( None, _1 ) +# 26253 "parsing/parser.ml" + + in + let _1 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3130 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 26262 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 25900 "parsing/parser.ml" - : (Parsetree.structure_item list list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 26268 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25910,9 +26278,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined1; @@ -25920,150 +26288,64 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = e; - MenhirLib.EngineTypes.startp = _startpos_e_; - MenhirLib.EngineTypes.endp = _endpos_e_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; }; } = _menhir_stack in - let xs : (Parsetree.structure_item list list) = Obj.magic xs in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let e : (Parsetree.expression) = Obj.magic e in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" + (string) +# 26315 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 26321 "parsing/parser.ml" + ) = Obj.magic label in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_inlined1_ in let _v = - let x = - let _1 = - let ys = - let (_endpos__1_, _1) = (_endpos__1_inlined1_, _1_inlined1) in - let items = - let x = - let _1 = - let _1 = - let attrs = -# 4110 "parsing/parser.mly" - ( _1 ) -# 25956 "parsing/parser.ml" - in - -# 1512 "parsing/parser.mly" - ( mkstrexp e attrs ) -# 25961 "parsing/parser.ml" - - in - let _startpos__1_ = _startpos_e_ in - let _startpos = _startpos__1_ in - -# 988 "parsing/parser.mly" - ( text_str _startpos @ [_1] ) -# 25969 "parsing/parser.ml" - - in - let _startpos__1_ = _startpos_e_ in - let _endpos = _endpos__1_ in - let _startpos = _startpos__1_ in - -# 1007 "parsing/parser.mly" - ( mark_rhs_docs _startpos _endpos; - _1 ) -# 25979 "parsing/parser.ml" - - in - -# 1056 "parsing/parser.mly" - ( x ) -# 25985 "parsing/parser.ml" - - in - -# 1505 "parsing/parser.mly" - ( items ) -# 25991 "parsing/parser.ml" - - in - let xs = - let _startpos = _startpos__1_ in - -# 990 "parsing/parser.mly" - ( text_str _startpos ) -# 25999 "parsing/parser.ml" - - in - -# 278 "" - ( xs @ ys ) -# 26005 "parsing/parser.ml" - - in + let _3 = + let (_2, _1) = (_2_inlined1, _1_inlined1) in -# 1521 "parsing/parser.mly" - ( _1 ) -# 26011 "parsing/parser.ml" +# 3114 "parsing/parser.mly" + ( Some _1, _2 ) +# 26333 "parsing/parser.ml" in - ( -# 219 "" - ( x :: xs ) -# 26017 "parsing/parser.ml" - : (Parsetree.structure_item list list)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let xs : (Parsetree.structure_item list list) = Obj.magic xs in - let _1 : (Parsetree.structure_item) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in - let _v = - let x = - let _1 = - let _startpos = _startpos__1_ in - -# 988 "parsing/parser.mly" - ( text_str _startpos @ [_1] ) -# 26054 "parsing/parser.ml" - - in + let _1 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 1521 "parsing/parser.mly" - ( _1 ) -# 26060 "parsing/parser.ml" +# 3130 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 26342 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 26066 "parsing/parser.ml" - : (Parsetree.structure_item list list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 26348 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26072,58 +26354,80 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.class_type_field list list) = -# 216 "" - ( [] ) -# 26085 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = label_inlined1; + MenhirLib.EngineTypes.startp = _startpos_label_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_label_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; } = _menhir_stack in - let xs : (Parsetree.class_type_field list list) = Obj.magic xs in - let _1 : (Parsetree.class_type_field) = Obj.magic _1 in + let label_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 26394 "parsing/parser.ml" + ) = Obj.magic label_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 26401 "parsing/parser.ml" + ) = Obj.magic label in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos_label_inlined1_ in let _v = - let x = - let _startpos = _startpos__1_ in + let _3 = + let (_endpos_label_, _startpos_label_, label) = (_endpos_label_inlined1_, _startpos_label_inlined1_, label_inlined1) in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 1002 "parsing/parser.mly" - ( text_csig _startpos @ [_1] ) -# 26120 "parsing/parser.ml" +# 3116 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 26415 "parsing/parser.ml" + + in + let _1 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3130 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 26424 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 26126 "parsing/parser.ml" - : (Parsetree.class_type_field list list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 26430 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26132,58 +26436,111 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.class_field list list) = -# 216 "" - ( [] ) -# 26145 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label_inlined1; + MenhirLib.EngineTypes.startp = _startpos_label_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_label_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; }; } = _menhir_stack in - let xs : (Parsetree.class_field list list) = Obj.magic xs in - let _1 : (Parsetree.class_field) = Obj.magic _1 in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 26503 "parsing/parser.ml" + ) = Obj.magic label_inlined1 in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 26511 "parsing/parser.ml" + ) = Obj.magic label in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__6_ in let _v = - let x = - let _startpos = _startpos__1_ in + let _3 = + let (_endpos_label_, _startpos_label_, _startpos__2_, label) = (_endpos_label_inlined1_, _startpos_label_inlined1_, _startpos__2_inlined1_, label_inlined1) in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 1000 "parsing/parser.mly" - ( text_cstr _startpos @ [_1] ) -# 26180 "parsing/parser.ml" +# 3119 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 26528 "parsing/parser.ml" + + in + let _1 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3130 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 26537 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 26186 "parsing/parser.ml" - : (Parsetree.class_field list list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 26543 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26192,58 +26549,99 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.structure_item list list) = -# 216 "" - ( [] ) -# 26205 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; }; } = _menhir_stack in - let xs : (Parsetree.structure_item list list) = Obj.magic xs in - let _1 : (Parsetree.structure_item) = Obj.magic _1 in + let _1_inlined1 : (Parsetree.pattern) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 26612 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__1_inlined1_ in let _v = - let x = - let _startpos = _startpos__1_ in + let _3 = + let _1 = _1_inlined1 in -# 988 "parsing/parser.mly" - ( text_str _startpos @ [_1] ) -# 26240 "parsing/parser.ml" +# 3112 "parsing/parser.mly" + ( None, _1 ) +# 26625 "parsing/parser.ml" + + in + let _1 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3133 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 26638 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 26246 "parsing/parser.ml" - : (Parsetree.structure_item list list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 26644 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26252,76 +26650,110 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.toplevel_phrase list list) = -# 216 "" - ( [] ) -# 26265 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _2_inlined2; + MenhirLib.EngineTypes.startp = _startpos__2_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; }; } = _menhir_stack in - let xs : (Parsetree.toplevel_phrase list list) = Obj.magic xs in + let _2_inlined2 : (Parsetree.pattern) = Obj.magic _2_inlined2 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" + (string) +# 26715 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 26724 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__2_inlined2_ in let _v = - let x = - let _1 = - let x = - let _1 = -# 1054 "parsing/parser.mly" - ( [] ) -# 26301 "parsing/parser.ml" - in - -# 1307 "parsing/parser.mly" - ( _1 ) -# 26306 "parsing/parser.ml" - - in - -# 188 "" - ( x ) -# 26312 "parsing/parser.ml" - - in + let _3 = + let (_2, _1) = (_2_inlined2, _1_inlined1) in -# 1319 "parsing/parser.mly" - ( _1 ) -# 26318 "parsing/parser.ml" +# 3114 "parsing/parser.mly" + ( Some _1, _2 ) +# 26737 "parsing/parser.ml" + + in + let _1 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3133 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 26750 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 26324 "parsing/parser.ml" - : (Parsetree.toplevel_phrase list list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 26756 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26334,9 +26766,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = label_inlined1; + MenhirLib.EngineTypes.startp = _startpos_label_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_label_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined1; @@ -26344,89 +26776,98 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = e; - MenhirLib.EngineTypes.startp = _startpos_e_; - MenhirLib.EngineTypes.endp = _endpos_e_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - } = _menhir_stack in - let xs : (Parsetree.toplevel_phrase list list) = Obj.magic xs in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let e : (Parsetree.expression) = Obj.magic e in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in - let _v = - let x = - let _1 = - let x = - let _1 = _1_inlined1 in - let _1 = - let x = - let _1 = - let _1 = - let attrs = -# 4110 "parsing/parser.mly" - ( _1 ) -# 26380 "parsing/parser.ml" - in - -# 1512 "parsing/parser.mly" - ( mkstrexp e attrs ) -# 26385 "parsing/parser.ml" - - in - -# 998 "parsing/parser.mly" - ( Ptop_def [_1] ) -# 26391 "parsing/parser.ml" - - in - let _startpos__1_ = _startpos_e_ in - let _startpos = _startpos__1_ in - -# 996 "parsing/parser.mly" - ( text_def _startpos @ [_1] ) -# 26399 "parsing/parser.ml" - - in - -# 1056 "parsing/parser.mly" - ( x ) -# 26405 "parsing/parser.ml" - - in - -# 1307 "parsing/parser.mly" - ( _1 ) -# 26411 "parsing/parser.ml" - - in - -# 188 "" - ( x ) -# 26417 "parsing/parser.ml" - - in + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let label_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 26826 "parsing/parser.ml" + ) = Obj.magic label_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 26836 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_label_inlined1_ in + let _v = + let _3 = + let (_endpos_label_, _startpos_label_, label) = (_endpos_label_inlined1_, _startpos_label_inlined1_, label_inlined1) in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 1319 "parsing/parser.mly" - ( _1 ) -# 26423 "parsing/parser.ml" +# 3116 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 26851 "parsing/parser.ml" + + in + let _1 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3133 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 26864 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 26429 "parsing/parser.ml" - : (Parsetree.toplevel_phrase list list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 26870 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26439,48 +26880,139 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _6_inlined1; + MenhirLib.EngineTypes.startp = _startpos__6_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__6_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty_inlined1; + MenhirLib.EngineTypes.startp = _startpos_cty_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_cty_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4_inlined1; + MenhirLib.EngineTypes.startp = _startpos__4_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__4_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label_inlined1; + MenhirLib.EngineTypes.startp = _startpos_label_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_label_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined2; + MenhirLib.EngineTypes.startp = _startpos__2_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; }; } = _menhir_stack in - let xs : (Parsetree.toplevel_phrase list list) = Obj.magic xs in - let _1 : (Parsetree.structure_item) = Obj.magic _1 in + let _6_inlined1 : unit = Obj.magic _6_inlined1 in + let cty_inlined1 : (Parsetree.core_type) = Obj.magic cty_inlined1 in + let _4_inlined1 : unit = Obj.magic _4_inlined1 in + let label_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 26967 "parsing/parser.ml" + ) = Obj.magic label_inlined1 in + let _2_inlined2 : unit = Obj.magic _2_inlined2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 26978 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__6_inlined1_ in let _v = - let x = - let _1 = - let _1 = -# 998 "parsing/parser.mly" - ( Ptop_def [_1] ) -# 26465 "parsing/parser.ml" - in - let _startpos = _startpos__1_ in - -# 996 "parsing/parser.mly" - ( text_def _startpos @ [_1] ) -# 26471 "parsing/parser.ml" - - in + let _3 = + let (_endpos_label_, _startpos_label_, _endpos__6_, _startpos__2_, cty, label) = (_endpos_label_inlined1_, _startpos_label_inlined1_, _endpos__6_inlined1_, _startpos__2_inlined2_, cty_inlined1, label_inlined1) in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 1319 "parsing/parser.mly" - ( _1 ) -# 26477 "parsing/parser.ml" +# 3119 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 26996 "parsing/parser.ml" + + in + let _1 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3133 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 27009 "parsing/parser.ml" in ( -# 219 "" - ( x :: xs ) -# 26483 "parsing/parser.ml" - : (Parsetree.toplevel_phrase list list)) +# 3142 "parsing/parser.mly" + ( [ _3; _1 ] ) +# 27015 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26493,53 +27025,36 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in - let xs : (Parsetree.toplevel_phrase list list) = Obj.magic xs in - let _1 : (Parsetree.toplevel_phrase) = Obj.magic _1 in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__3_ in let _v = - let x = - let _1 = - let _1 = - let _endpos = _endpos__1_ in - let _startpos = _startpos__1_ in - -# 1007 "parsing/parser.mly" - ( mark_rhs_docs _startpos _endpos; - _1 ) -# 26523 "parsing/parser.ml" - - in - let _startpos = _startpos__1_ in - -# 996 "parsing/parser.mly" - ( text_def _startpos @ [_1] ) -# 26530 "parsing/parser.ml" - - in - -# 1319 "parsing/parser.mly" - ( _1 ) -# 26536 "parsing/parser.ml" - - in + let _loc__3_ = (_startpos__3_, _endpos__3_) in ( -# 219 "" - ( x :: xs ) -# 26542 "parsing/parser.ml" - : (Parsetree.toplevel_phrase list list)) +# 3144 "parsing/parser.mly" + ( expecting _loc__3_ "pattern" ) +# 27057 "parsing/parser.ml" + : ((string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26551,74 +27066,105 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = opat; - MenhirLib.EngineTypes.startp = _startpos_opat_; - MenhirLib.EngineTypes.endp = _endpos_opat_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = octy; - MenhirLib.EngineTypes.startp = _startpos_octy_; - MenhirLib.EngineTypes.endp = _endpos_octy_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let opat : (Parsetree.pattern option) = Obj.magic opat in - let octy : (Parsetree.core_type option) = Obj.magic octy in - let _1 : (Longident.t) = Obj.magic _1 in + let _1 : (Asttypes.closed_flag * (string option * Parsetree.pattern) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_opat_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.pattern_desc) = +# 3156 "parsing/parser.mly" + ( let closed, pat = _1 in + Ppat_tuple(List.rev pat, closed) ) +# 27084 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Asttypes.closed_flag * (string option * Parsetree.pattern) list) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.pattern_desc) = +# 3156 "parsing/parser.mly" + ( let closed, pat = _1 in + Ppat_tuple(List.rev pat, closed) ) +# 27110 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.pattern * Parsetree.expression * + Parsetree.value_constraint option) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.pattern * Parsetree.expression * + Parsetree.value_constraint option * bool) = +# 2699 "parsing/parser.mly" + ( let p,e,c = _1 in (p,e,c,false) ) +# 27137 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Asttypes.label) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in let _v = - let _2 = -# 123 "" - ( None ) -# 26583 "parsing/parser.ml" - in - let x = - let label = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 26593 "parsing/parser.ml" - - in - let _startpos_label_ = _startpos__1_ in - let _endpos = _endpos_opat_ in - let _symbolstartpos = _startpos_label_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3058 "parsing/parser.mly" - ( let constraint_loc, label, pat = - match opat with - | None -> - (* No pattern; this is a pun. Desugar it. - But that the pattern was there and the label reconstructed (which - piece of AST is marked as ghost is important for warning - emission). *) - _sloc, make_ghost label, pat_of_label label - | Some pat -> - (_startpos_octy_, _endpos), label, pat - in - label, mkpat_opt_constraint ~loc:constraint_loc pat octy - ) -# 26615 "parsing/parser.ml" - - in + let _endpos = _endpos__1_ in + let _startpos = _startpos__1_ in + let _loc = (_startpos, _endpos) in ( -# 1244 "parsing/parser.mly" - ( [x], None ) -# 26621 "parsing/parser.ml" - : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option)) +# 2702 "parsing/parser.mly" + ( (mkpatvar ~loc:_loc _1, mkexpvar ~loc:_loc _1, None, true) ) +# 27166 "parsing/parser.ml" + : (Parsetree.pattern * Parsetree.expression * + Parsetree.value_constraint option * bool)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26631,80 +27177,39 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = opat; - MenhirLib.EngineTypes.startp = _startpos_opat_; - MenhirLib.EngineTypes.endp = _endpos_opat_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = octy; - MenhirLib.EngineTypes.startp = _startpos_octy_; - MenhirLib.EngineTypes.endp = _endpos_octy_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let x : unit = Obj.magic x in - let opat : (Parsetree.pattern option) = Obj.magic opat in - let octy : (Parsetree.core_type option) = Obj.magic octy in - let _1 : (Longident.t) = Obj.magic _1 in + let _2 : (Parsetree.expression) = Obj.magic _2 in + let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_x_ in + let _endpos = _endpos__2_ in let _v = - let _2 = -# 126 "" - ( Some x ) -# 26669 "parsing/parser.ml" - in - let x = - let label = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 26679 "parsing/parser.ml" - - in - let _startpos_label_ = _startpos__1_ in - let _endpos = _endpos_opat_ in - let _symbolstartpos = _startpos_label_ in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3058 "parsing/parser.mly" - ( let constraint_loc, label, pat = - match opat with - | None -> - (* No pattern; this is a pun. Desugar it. - But that the pattern was there and the label reconstructed (which - piece of AST is marked as ghost is important for warning - emission). *) - _sloc, make_ghost label, pat_of_label label - | Some pat -> - (_startpos_octy_, _endpos), label, pat - in - label, mkpat_opt_constraint ~loc:constraint_loc pat octy - ) -# 26701 "parsing/parser.ml" +# 2667 "parsing/parser.mly" + ( mkpatvar ~loc:_sloc _1 ) +# 27205 "parsing/parser.ml" in ( -# 1244 "parsing/parser.mly" - ( [x], None ) -# 26707 "parsing/parser.ml" - : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option)) +# 2671 "parsing/parser.mly" + ( (_1, _2, None) ) +# 27211 "parsing/parser.ml" + : (Parsetree.pattern * Parsetree.expression * + Parsetree.value_constraint option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26722,84 +27227,56 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = y; - MenhirLib.EngineTypes.startp = _startpos_y_; - MenhirLib.EngineTypes.endp = _endpos_y_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; MenhirLib.EngineTypes.startp = _startpos__2_; MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = opat; - MenhirLib.EngineTypes.startp = _startpos_opat_; - MenhirLib.EngineTypes.endp = _endpos_opat_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = octy; - MenhirLib.EngineTypes.startp = _startpos_octy_; - MenhirLib.EngineTypes.endp = _endpos_octy_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _4 : (unit option) = Obj.magic _4 in - let y : unit = Obj.magic y in - let _2 : unit = Obj.magic _2 in - let opat : (Parsetree.pattern option) = Obj.magic opat in - let octy : (Parsetree.core_type option) = Obj.magic octy in - let _1 : (Longident.t) = Obj.magic _1 in + let _4 : (Parsetree.expression) = Obj.magic _4 in + let _3 : unit = Obj.magic _3 in + let _2 : (Parsetree.type_constraint) = Obj.magic _2 in + let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v = - let x = - let label = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 26774 "parsing/parser.ml" - - in - let _startpos_label_ = _startpos__1_ in - let _endpos = _endpos_opat_ in - let _symbolstartpos = _startpos_label_ in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3058 "parsing/parser.mly" - ( let constraint_loc, label, pat = - match opat with - | None -> - (* No pattern; this is a pun. Desugar it. - But that the pattern was there and the label reconstructed (which - piece of AST is marked as ghost is important for warning - emission). *) - _sloc, make_ghost label, pat_of_label label - | Some pat -> - (_startpos_octy_, _endpos), label, pat - in - label, mkpat_opt_constraint ~loc:constraint_loc pat octy - ) -# 26796 "parsing/parser.ml" +# 2667 "parsing/parser.mly" + ( mkpatvar ~loc:_sloc _1 ) +# 27264 "parsing/parser.ml" in ( -# 1246 "parsing/parser.mly" - ( [x], Some y ) -# 26802 "parsing/parser.ml" - : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option)) +# 2673 "parsing/parser.mly" + ( let v = _1 in (* PR#7344 *) + let t = + match _2 with + Pconstraint t -> + Pvc_constraint { locally_abstract_univars = []; typ=t } + | Pcoerce (ground, coercion) -> Pvc_coercion { ground; coercion} + in + (v, _4, Some t) + ) +# 27278 "parsing/parser.ml" + : (Parsetree.pattern * Parsetree.expression * + Parsetree.value_constraint option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26812,83 +27289,200 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = tail; - MenhirLib.EngineTypes.startp = _startpos_tail_; - MenhirLib.EngineTypes.endp = _endpos_tail_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = opat; - MenhirLib.EngineTypes.startp = _startpos_opat_; - MenhirLib.EngineTypes.endp = _endpos_opat_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = octy; - MenhirLib.EngineTypes.startp = _startpos_octy_; - MenhirLib.EngineTypes.endp = _endpos_octy_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; }; }; }; }; } = _menhir_stack in - let tail : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option) = Obj.magic tail in + let _5 : (Parsetree.expression) = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.core_type) = Obj.magic _3 in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in let _2 : unit = Obj.magic _2 in - let opat : (Parsetree.pattern option) = Obj.magic opat in - let octy : (Parsetree.core_type option) = Obj.magic octy in - let _1 : (Longident.t) = Obj.magic _1 in + let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_tail_ in + let _endpos = _endpos__5_ in let _v = - let x = - let label = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let _1 = + let _1 = + let xs = +# 264 "" + ( List.rev xs ) +# 27351 "parsing/parser.ml" + in + +# 1074 "parsing/parser.mly" + ( xs ) +# 27356 "parsing/parser.ml" + + in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 26862 "parsing/parser.ml" +# 3590 "parsing/parser.mly" + ( _1 ) +# 27362 "parsing/parser.ml" in - let _startpos_label_ = _startpos__1_ in - let _endpos = _endpos_opat_ in - let _symbolstartpos = _startpos_label_ in + +# 3594 "parsing/parser.mly" + ( Ptyp_poly(_1, _3) ) +# 27368 "parsing/parser.ml" + + in + let _startpos__3_ = _startpos_xs_ in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3058 "parsing/parser.mly" - ( let constraint_loc, label, pat = - match opat with - | None -> - (* No pattern; this is a pun. Desugar it. - But that the pattern was there and the label reconstructed (which - piece of AST is marked as ghost is important for warning - emission). *) - _sloc, make_ghost label, pat_of_label label - | Some pat -> - (_startpos_octy_, _endpos), label, pat - in - label, mkpat_opt_constraint ~loc:constraint_loc pat octy +# 2667 "parsing/parser.mly" + ( mkpatvar ~loc:_sloc _1 ) +# 27379 "parsing/parser.ml" + + in + let _loc__3_ = (_startpos__3_, _endpos__3_) in + ( +# 2683 "parsing/parser.mly" + ( + let t = ghtyp ~loc:(_loc__3_) _3 in + (_1, _5, Some (Pvc_constraint { locally_abstract_univars = []; typ=t })) ) -# 26884 "parsing/parser.ml" +# 27389 "parsing/parser.ml" + : (Parsetree.pattern * Parsetree.expression * + Parsetree.value_constraint option)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _8; + MenhirLib.EngineTypes.startp = _startpos__8_; + MenhirLib.EngineTypes.endp = _endpos__8_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _8 : (Parsetree.expression) = Obj.magic _8 in + let _7 : unit = Obj.magic _7 in + let _6 : (Parsetree.core_type) = Obj.magic _6 in + let _5 : unit = Obj.magic _5 in + let xs : (string Asttypes.loc list) = Obj.magic xs in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Asttypes.label) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__8_ in + let _v = + let _4 = +# 2664 "parsing/parser.mly" + ( xs ) +# 27466 "parsing/parser.ml" + in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2667 "parsing/parser.mly" + ( mkpatvar ~loc:_sloc _1 ) +# 27475 "parsing/parser.ml" in ( -# 1250 "parsing/parser.mly" - ( let xs, y = tail in - x :: xs, y ) -# 26891 "parsing/parser.ml" - : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option)) +# 2688 "parsing/parser.mly" + ( let constraint' = + Pvc_constraint { locally_abstract_univars=_4; typ = _6} + in + (_1, _8, Some constraint') ) +# 27484 "parsing/parser.ml" + : (Parsetree.pattern * Parsetree.expression * + Parsetree.value_constraint option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26924,10 +27518,11 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in - let _v : (Parsetree.case) = -# 2802 "parsing/parser.mly" - ( Exp.case _1 _3 ) -# 26931 "parsing/parser.ml" + let _v : (Parsetree.pattern * Parsetree.expression * + Parsetree.value_constraint option) = +# 2693 "parsing/parser.mly" + ( (_1, _3, None) ) +# 27526 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26971,16 +27566,17 @@ module Tables = struct } = _menhir_stack in let _5 : (Parsetree.expression) = Obj.magic _5 in let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.expression) = Obj.magic _3 in + let _3 : (Parsetree.core_type) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in - let _v : (Parsetree.case) = -# 2804 "parsing/parser.mly" - ( Exp.case _1 ~guard:_3 _5 ) -# 26984 "parsing/parser.ml" + let _v : (Parsetree.pattern * Parsetree.expression * + Parsetree.value_constraint option) = +# 2695 "parsing/parser.mly" + ( (_1, _5, Some(Pvc_constraint { locally_abstract_univars=[]; typ=_3 })) ) +# 27580 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26993,166 +27589,87 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v = - let _loc__3_ = (_startpos__3_, _endpos__3_) in - ( -# 2806 "parsing/parser.mly" - ( Exp.case _1 (Exp.unreachable ~loc:(make_loc _loc__3_) ()) ) -# 27025 "parsing/parser.ml" - : (Parsetree.case)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = tail; - MenhirLib.EngineTypes.startp = _startpos_tail_; - MenhirLib.EngineTypes.endp = _endpos_tail_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = body; + MenhirLib.EngineTypes.startp = _startpos_body_; + MenhirLib.EngineTypes.endp = _endpos_body_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = rec_flag; + MenhirLib.EngineTypes.startp = _startpos_rec_flag_; + MenhirLib.EngineTypes.endp = _endpos_rec_flag_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; }; }; } = _menhir_stack in - let tail : (Parsetree.object_field list * Asttypes.closed_flag) = Obj.magic tail in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let _5 : unit = Obj.magic _5 in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in - let _1 : ( -# 797 "parsing/parser.mly" - (string) -# 27089 "parsing/parser.ml" - ) = Obj.magic _1 in + let body : (Parsetree.pattern * Parsetree.expression * + Parsetree.value_constraint option * bool) = Obj.magic body in + let rec_flag : (Asttypes.rec_flag) = Obj.magic rec_flag in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let ext : (string Asttypes.loc option) = Obj.magic ext in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_tail_ in + let _endpos = _endpos__1_inlined2_ in let _v = - let head = - let _6 = - let _1 = _1_inlined3 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 27101 "parsing/parser.ml" - - in - let _endpos__6_ = _endpos__1_inlined3_ in - let _4 = + let _1 = + let attrs2 = let _1 = _1_inlined2 in -# 4114 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 27110 "parsing/parser.ml" +# 27645 "parsing/parser.ml" in - let _endpos__4_ = _endpos__1_inlined2_ in - let _3 = + let _endpos_attrs2_ = _endpos__1_inlined2_ in + let attrs1 = let _1 = _1_inlined1 in -# 3484 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 27119 "parsing/parser.ml" - - in - let _1 = - let _1 = -# 3765 "parsing/parser.mly" - ( _1 ) -# 27126 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 27134 "parsing/parser.ml" +# 27654 "parsing/parser.ml" in - let _endpos = _endpos__6_ in + let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3750 "parsing/parser.mly" - ( let info = - match rhs_info _endpos__4_ with - | Some _ as info_before_semi -> info_before_semi - | None -> symbol_info _endpos - in - let attrs = add_info_attrs info (_4 @ _6) in - Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 27149 "parsing/parser.ml" +# 2722 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) + ) +# 27666 "parsing/parser.ml" in ( -# 3731 "parsing/parser.mly" - ( let (f, c) = tail in (head :: f, c) ) -# 27155 "parsing/parser.ml" - : (Parsetree.object_field list * Asttypes.closed_flag)) +# 2712 "parsing/parser.mly" + ( _1 ) +# 27672 "parsing/parser.ml" + : (let_bindings)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27165,46 +27682,27 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = tail; - MenhirLib.EngineTypes.startp = _startpos_tail_; - MenhirLib.EngineTypes.endp = _endpos_tail_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let tail : (Parsetree.object_field list * Asttypes.closed_flag) = Obj.magic tail in - let _2 : unit = Obj.magic _2 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let _2 : (let_binding) = Obj.magic _2 in + let _1 : (let_bindings) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_ty_ in - let _endpos = _endpos_tail_ in - let _v = - let head = - let _endpos = _endpos_ty_ in - let _symbolstartpos = _startpos_ty_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3761 "parsing/parser.mly" - ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 27200 "parsing/parser.ml" - - in - ( -# 3731 "parsing/parser.mly" - ( let (f, c) = tail in (head :: f, c) ) -# 27206 "parsing/parser.ml" - : (Parsetree.object_field list * Asttypes.closed_flag)) - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (let_bindings) = +# 2713 "parsing/parser.mly" + ( addlb _1 _2 ) +# 27705 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -27216,117 +27714,85 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = body; + MenhirLib.EngineTypes.startp = _startpos_body_; + MenhirLib.EngineTypes.endp = _endpos_body_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = rec_flag; + MenhirLib.EngineTypes.startp = _startpos_rec_flag_; + MenhirLib.EngineTypes.endp = _endpos_rec_flag_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined1; MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; }; } = _menhir_stack in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let _5 : unit = Obj.magic _5 in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in - let _1 : ( -# 797 "parsing/parser.mly" - (string) -# 27263 "parsing/parser.ml" - ) = Obj.magic _1 in + let body : (Parsetree.pattern * Parsetree.expression * + Parsetree.value_constraint option * bool) = Obj.magic body in + let rec_flag : (Asttypes.rec_flag) = Obj.magic rec_flag in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined3_ in + let _endpos = _endpos__1_inlined2_ in let _v = - let head = - let _6 = - let _1 = _1_inlined3 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 27275 "parsing/parser.ml" - - in - let _endpos__6_ = _endpos__1_inlined3_ in - let _4 = + let _1 = + let attrs2 = let _1 = _1_inlined2 in -# 4114 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 27284 "parsing/parser.ml" +# 27763 "parsing/parser.ml" in - let _endpos__4_ = _endpos__1_inlined2_ in - let _3 = + let _endpos_attrs2_ = _endpos__1_inlined2_ in + let attrs1 = let _1 = _1_inlined1 in -# 3484 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 27293 "parsing/parser.ml" - - in - let _1 = - let _1 = -# 3765 "parsing/parser.mly" - ( _1 ) -# 27300 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 27308 "parsing/parser.ml" +# 27772 "parsing/parser.ml" in - let _endpos = _endpos__6_ in + let ext = +# 4293 "parsing/parser.mly" + ( None ) +# 27778 "parsing/parser.ml" + in + let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3750 "parsing/parser.mly" - ( let info = - match rhs_info _endpos__4_ with - | Some _ as info_before_semi -> info_before_semi - | None -> symbol_info _endpos - in - let attrs = add_info_attrs info (_4 @ _6) in - Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 27323 "parsing/parser.ml" +# 2722 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) + ) +# 27789 "parsing/parser.ml" in ( -# 3734 "parsing/parser.mly" - ( [head], Closed ) -# 27329 "parsing/parser.ml" - : (Parsetree.object_field list * Asttypes.closed_flag)) +# 2712 "parsing/parser.mly" + ( _1 ) +# 27795 "parsing/parser.ml" + : (let_bindings)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27339,134 +27805,105 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let ty : (Parsetree.core_type) = Obj.magic ty in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_ty_ in - let _endpos = _endpos__2_ in - let _v = - let head = - let _endpos = _endpos_ty_ in - let _symbolstartpos = _startpos_ty_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3761 "parsing/parser.mly" - ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 27367 "parsing/parser.ml" - - in - ( -# 3734 "parsing/parser.mly" - ( [head], Closed ) -# 27373 "parsing/parser.ml" - : (Parsetree.object_field list * Asttypes.closed_flag)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = body; + MenhirLib.EngineTypes.startp = _startpos_body_; + MenhirLib.EngineTypes.endp = _endpos_body_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = rec_flag; + MenhirLib.EngineTypes.startp = _startpos_rec_flag_; + MenhirLib.EngineTypes.endp = _endpos_rec_flag_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; }; }; } = _menhir_stack in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let body : (Parsetree.pattern * Parsetree.expression * + Parsetree.value_constraint option * bool) = Obj.magic body in + let rec_flag : (Asttypes.rec_flag) = Obj.magic rec_flag in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in - let _1 : ( -# 797 "parsing/parser.mly" - (string) -# 27416 "parsing/parser.ml" - ) = Obj.magic _1 in + let _2 : (Ast_helper.str) = Obj.magic _2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined2_ in + let _endpos = _endpos__1_inlined3_ in let _v = - let head = - let _4 = - let _1 = _1_inlined2 in + let _1 = + let attrs2 = + let _1 = _1_inlined3 in -# 4114 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 27428 "parsing/parser.ml" +# 27868 "parsing/parser.ml" in - let _endpos__4_ = _endpos__1_inlined2_ in - let _3 = - let _1 = _1_inlined1 in + let _endpos_attrs2_ = _endpos__1_inlined3_ in + let attrs1 = + let _1 = _1_inlined2 in -# 3484 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 27437 "parsing/parser.ml" +# 27877 "parsing/parser.ml" in - let _1 = - let _1 = -# 3765 "parsing/parser.mly" - ( _1 ) -# 27444 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let ext = + let _startpos__1_ = _startpos__1_inlined1_ in + let _endpos = _endpos__2_ in + let _startpos = _startpos__1_ in + let _loc = (_startpos, _endpos) in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 27452 "parsing/parser.ml" +# 4295 "parsing/parser.mly" + ( not_expecting _loc "extension" ) +# 27888 "parsing/parser.ml" in - let _endpos = _endpos__4_ in + let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3743 "parsing/parser.mly" - ( let info = symbol_info _endpos in - let attrs = add_info_attrs info _4 in - Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 27463 "parsing/parser.ml" +# 2722 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) + ) +# 27900 "parsing/parser.ml" in ( -# 3737 "parsing/parser.mly" - ( [head], Closed ) -# 27469 "parsing/parser.ml" - : (Parsetree.object_field list * Asttypes.closed_flag)) +# 2712 "parsing/parser.mly" + ( _1 ) +# 27906 "parsing/parser.ml" + : (let_bindings)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27478,33 +27915,28 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; } = _menhir_stack in - let ty : (Parsetree.core_type) = Obj.magic ty in + let _2 : (let_binding) = Obj.magic _2 in + let _1 : (let_bindings) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_ty_ in - let _endpos = _endpos_ty_ in - let _v = - let head = - let _endpos = _endpos_ty_ in - let _symbolstartpos = _startpos_ty_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3761 "parsing/parser.mly" - ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 27500 "parsing/parser.ml" - - in - ( -# 3737 "parsing/parser.mly" - ( [head], Closed ) -# 27506 "parsing/parser.ml" - : (Parsetree.object_field list * Asttypes.closed_flag)) - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (let_bindings) = +# 2713 "parsing/parser.mly" + ( addlb _1 _2 ) +# 27939 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -27521,14 +27953,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v : (Parsetree.object_field list * Asttypes.closed_flag) = -# 3739 "parsing/parser.mly" - ( [], Open ) -# 27532 "parsing/parser.ml" + let _v : (Parsetree.pattern) = +# 2379 "parsing/parser.mly" + ( _1 ) +# 27964 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27541,89 +27973,51 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = private_; - MenhirLib.EngineTypes.startp = _startpos_private__; - MenhirLib.EngineTypes.endp = _endpos_private__; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in - let _5 : unit = Obj.magic _5 in - let _1_inlined1 : ( -# 797 "parsing/parser.mly" - (string) -# 27579 "parsing/parser.ml" - ) = Obj.magic _1_inlined1 in - let private_ : (Asttypes.private_flag) = Obj.magic private_ in - let _1 : (Parsetree.attributes) = Obj.magic _1 in + let _3 : (Parsetree.core_type) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined2_ in + let _endpos = _endpos__3_ in let _v = - let ty = - let _1 = _1_inlined2 in - -# 3480 "parsing/parser.mly" - ( _1 ) -# 27592 "parsing/parser.ml" - - in - let label = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _1 = let _1 = -# 3765 "parsing/parser.mly" - ( _1 ) -# 27600 "parsing/parser.ml" +# 2381 "parsing/parser.mly" + ( Ppat_constraint(_1, _3) ) +# 28005 "parsing/parser.ml" in + let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 27608 "parsing/parser.ml" +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 28014 "parsing/parser.ml" in - let attrs = -# 4114 "parsing/parser.mly" - ( _1 ) -# 27614 "parsing/parser.ml" - in - let _1 = -# 4013 "parsing/parser.mly" - ( Fresh ) -# 27619 "parsing/parser.ml" - in ( -# 2104 "parsing/parser.mly" - ( (label, private_, Cfk_virtual ty), attrs ) -# 27624 "parsing/parser.ml" - : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * - Parsetree.class_field_kind) * - Parsetree.attributes)) +# 2382 "parsing/parser.mly" + ( _1 ) +# 28020 "parsing/parser.ml" + : (Parsetree.pattern)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27636,77 +28030,38 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = exp; + MenhirLib.EngineTypes.startp = _startpos_exp_; + MenhirLib.EngineTypes.endp = _endpos_exp_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _5 : (Parsetree.expression) = Obj.magic _5 in - let _1_inlined1 : ( -# 797 "parsing/parser.mly" - (string) -# 27667 "parsing/parser.ml" - ) = Obj.magic _1_inlined1 in - let _3 : (Asttypes.private_flag) = Obj.magic _3 in - let _1 : (Parsetree.attributes) = Obj.magic _1 in + let exp : (Parsetree.expression) = Obj.magic exp in + let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos_exp_ in let _v = - let _4 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _1 = -# 3765 "parsing/parser.mly" - ( _1 ) -# 27680 "parsing/parser.ml" - in + let pat = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 27688 "parsing/parser.ml" +# 2667 "parsing/parser.mly" + ( mkpatvar ~loc:_sloc _1 ) +# 28058 "parsing/parser.ml" in - let _2 = -# 4114 "parsing/parser.mly" - ( _1 ) -# 27694 "parsing/parser.ml" - in - let _1 = -# 4016 "parsing/parser.mly" - ( Fresh ) -# 27699 "parsing/parser.ml" - in ( -# 2106 "parsing/parser.mly" - ( let e = _5 in - let loc = Location.(e.pexp_loc.loc_start, e.pexp_loc.loc_end) in - (_4, _3, - Cfk_concrete (_1, ghexp ~loc (Pexp_poly (e, None)))), _2 ) -# 27707 "parsing/parser.ml" - : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * - Parsetree.class_field_kind) * - Parsetree.attributes)) +# 2739 "parsing/parser.mly" + ( (pat, exp) ) +# 28064 "parsing/parser.ml" + : (Parsetree.pattern * Parsetree.expression)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27718,88 +28073,25 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _5 : (Parsetree.expression) = Obj.magic _5 in - let _1_inlined2 : ( -# 797 "parsing/parser.mly" - (string) -# 27756 "parsing/parser.ml" - ) = Obj.magic _1_inlined2 in - let _3 : (Asttypes.private_flag) = Obj.magic _3 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos__1_ in let _v = - let _4 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _1 = -# 3765 "parsing/parser.mly" - ( _1 ) -# 27770 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 27778 "parsing/parser.ml" - - in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 27786 "parsing/parser.ml" - - in - let _1 = -# 4017 "parsing/parser.mly" - ( Override ) -# 27792 "parsing/parser.ml" - in + let _endpos = _endpos__1_ in + let _startpos = _startpos__1_ in + let _loc = (_startpos, _endpos) in ( -# 2106 "parsing/parser.mly" - ( let e = _5 in - let loc = Location.(e.pexp_loc.loc_start, e.pexp_loc.loc_end) in - (_4, _3, - Cfk_concrete (_1, ghexp ~loc (Pexp_poly (e, None)))), _2 ) -# 27800 "parsing/parser.ml" - : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * - Parsetree.class_field_kind) * - Parsetree.attributes)) +# 2742 "parsing/parser.mly" + ( (mkpatvar ~loc:_loc _1, mkexpvar ~loc:_loc _1) ) +# 28094 "parsing/parser.ml" + : (Parsetree.pattern * Parsetree.expression)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27812,108 +28104,49 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _8; - MenhirLib.EngineTypes.startp = _startpos__8_; - MenhirLib.EngineTypes.endp = _endpos__8_; + MenhirLib.EngineTypes.semv = exp; + MenhirLib.EngineTypes.startp = _startpos_exp_; + MenhirLib.EngineTypes.endp = _endpos_exp_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _7; - MenhirLib.EngineTypes.startp = _startpos__7_; - MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = typ; + MenhirLib.EngineTypes.startp = _startpos_typ_; + MenhirLib.EngineTypes.endp = _endpos_typ_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = pat; + MenhirLib.EngineTypes.startp = _startpos_pat_; + MenhirLib.EngineTypes.endp = _endpos_pat_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; }; } = _menhir_stack in - let _8 : (Parsetree.expression) = Obj.magic _8 in - let _7 : unit = Obj.magic _7 in - let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in - let _5 : unit = Obj.magic _5 in - let _1_inlined1 : ( -# 797 "parsing/parser.mly" - (string) -# 27864 "parsing/parser.ml" - ) = Obj.magic _1_inlined1 in - let _3 : (Asttypes.private_flag) = Obj.magic _3 in - let _1 : (Parsetree.attributes) = Obj.magic _1 in + let exp : (Parsetree.expression) = Obj.magic exp in + let _4 : unit = Obj.magic _4 in + let typ : (Parsetree.core_type) = Obj.magic typ in + let _2 : unit = Obj.magic _2 in + let pat : (Parsetree.pattern) = Obj.magic pat in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__8_ in - let _v = - let _6 = - let _1 = _1_inlined2 in - -# 3480 "parsing/parser.mly" - ( _1 ) -# 27877 "parsing/parser.ml" - - in - let _startpos__6_ = _startpos__1_inlined2_ in - let _4 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _1 = -# 3765 "parsing/parser.mly" - ( _1 ) -# 27886 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 27894 "parsing/parser.ml" - - in - let _2 = -# 4114 "parsing/parser.mly" - ( _1 ) -# 27900 "parsing/parser.ml" - in - let _1 = -# 4016 "parsing/parser.mly" - ( Fresh ) -# 27905 "parsing/parser.ml" - in - ( -# 2112 "parsing/parser.mly" - ( let poly_exp = - let loc = (_startpos__6_, _endpos__8_) in - ghexp ~loc (Pexp_poly(_8, Some _6)) in - (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 27913 "parsing/parser.ml" - : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * - Parsetree.class_field_kind) * - Parsetree.attributes)) - in + let _startpos = _startpos_pat_ in + let _endpos = _endpos_exp_ in + let _v : (Parsetree.pattern * Parsetree.expression) = +# 2744 "parsing/parser.mly" + ( let loc = (_startpos_pat_, _endpos_typ_) in + (ghpat ~loc (Ppat_constraint(pat, typ)), exp) ) +# 28149 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -27925,34 +28158,179 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _8; - MenhirLib.EngineTypes.startp = _startpos__8_; - MenhirLib.EngineTypes.endp = _endpos__8_; + MenhirLib.EngineTypes.semv = exp; + MenhirLib.EngineTypes.startp = _startpos_exp_; + MenhirLib.EngineTypes.endp = _endpos_exp_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _7; - MenhirLib.EngineTypes.startp = _startpos__7_; - MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = pat; + MenhirLib.EngineTypes.startp = _startpos_pat_; + MenhirLib.EngineTypes.endp = _endpos_pat_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let exp : (Parsetree.expression) = Obj.magic exp in + let _2 : unit = Obj.magic _2 in + let pat : (Parsetree.pattern) = Obj.magic pat in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_pat_ in + let _endpos = _endpos_exp_ in + let _v : (Parsetree.pattern * Parsetree.expression) = +# 2747 "parsing/parser.mly" + ( (pat, exp) ) +# 28188 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = body; + MenhirLib.EngineTypes.startp = _startpos_body_; + MenhirLib.EngineTypes.endp = _endpos_body_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let body : (Parsetree.pattern * Parsetree.expression) = Obj.magic body in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_body_ in + let _endpos = _endpos_body_ in + let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = +# 2751 "parsing/parser.mly" + ( let let_pat, let_exp = body in + let_pat, let_exp, [] ) +# 28214 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = body; + MenhirLib.EngineTypes.startp = _startpos_body_; + MenhirLib.EngineTypes.endp = _endpos_body_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = bindings; + MenhirLib.EngineTypes.startp = _startpos_bindings_; + MenhirLib.EngineTypes.endp = _endpos_bindings_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let body : (Parsetree.pattern * Parsetree.expression) = Obj.magic body in + let _1 : ( +# 768 "parsing/parser.mly" + (string) +# 28248 "parsing/parser.ml" + ) = Obj.magic _1 in + let bindings : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = Obj.magic bindings in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_bindings_ in + let _endpos = _endpos_body_ in + let _v = + let pbop_op = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 28262 "parsing/parser.ml" + + in + let _endpos = _endpos_body_ in + let _symbolstartpos = _startpos_bindings_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 2754 "parsing/parser.mly" + ( let let_pat, let_exp, rev_ands = bindings in + let pbop_pat, pbop_exp = body in + let pbop_loc = make_loc _sloc in + let and_ = {pbop_op; pbop_pat; pbop_exp; pbop_loc} in + let_pat, let_exp, and_ :: rev_ands ) +# 28275 "parsing/parser.ml" + : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.class_declaration list) = +# 216 "" + ( [] ) +# 28294 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = body; + MenhirLib.EngineTypes.startp = _startpos_body_; + MenhirLib.EngineTypes.endp = _endpos_body_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = params; + MenhirLib.EngineTypes.startp = _startpos_params_; + MenhirLib.EngineTypes.endp = _endpos_params_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = virt; + MenhirLib.EngineTypes.startp = _startpos_virt_; + MenhirLib.EngineTypes.endp = _endpos_virt_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined1; @@ -27972,70 +28350,71 @@ module Tables = struct }; }; } = _menhir_stack in - let _8 : (Parsetree.expression) = Obj.magic _8 in - let _7 : unit = Obj.magic _7 in - let _1_inlined3 : (Parsetree.core_type) = Obj.magic _1_inlined3 in - let _5 : unit = Obj.magic _5 in + let xs : (Parsetree.class_declaration list) = Obj.magic xs in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let body : (Parsetree.class_expr) = Obj.magic body in let _1_inlined2 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 27983 "parsing/parser.ml" +# 28360 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in - let _3 : (Asttypes.private_flag) = Obj.magic _3 in + let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in + let virt : (Asttypes.virtual_flag) = Obj.magic virt in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__8_ in + let _endpos = _endpos_xs_ in let _v = - let _6 = - let _1 = _1_inlined3 in - -# 3480 "parsing/parser.mly" + let x = + let attrs2 = + let _1 = _1_inlined3 in + +# 4282 "parsing/parser.mly" ( _1 ) -# 27997 "parsing/parser.ml" - - in - let _startpos__6_ = _startpos__1_inlined3_ in - let _4 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _1 = -# 3765 "parsing/parser.mly" - ( _1 ) -# 28006 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in +# 28376 "parsing/parser.ml" + + in + let _endpos_attrs2_ = _endpos__1_inlined3_ in + let id = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 28388 "parsing/parser.ml" + + in + let attrs1 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 28396 "parsing/parser.ml" + + in + let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 28014 "parsing/parser.ml" - - in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 28022 "parsing/parser.ml" +# 1954 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let docs = symbol_docs _sloc in + let text = symbol_text _symbolstartpos in + Ci.mk id body ~virt ~params ~attrs ~loc ~text ~docs + ) +# 28411 "parsing/parser.ml" in - let _1 = -# 4017 "parsing/parser.mly" - ( Override ) -# 28028 "parsing/parser.ml" - in ( -# 2112 "parsing/parser.mly" - ( let poly_exp = - let loc = (_startpos__6_, _endpos__8_) in - ghexp ~loc (Pexp_poly(_8, Some _6)) in - (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 28036 "parsing/parser.ml" - : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * - Parsetree.class_field_kind) * - Parsetree.attributes)) +# 219 "" + ( x :: xs ) +# 28417 "parsing/parser.ml" + : (Parsetree.class_declaration list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28044,60 +28423,72 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.class_description list) = +# 216 "" + ( [] ) +# 28436 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _11; - MenhirLib.EngineTypes.startp = _startpos__11_; - MenhirLib.EngineTypes.endp = _endpos__11_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _10; - MenhirLib.EngineTypes.startp = _startpos__10_; - MenhirLib.EngineTypes.endp = _endpos__10_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _9; - MenhirLib.EngineTypes.startp = _startpos__9_; - MenhirLib.EngineTypes.endp = _endpos__9_; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _8; - MenhirLib.EngineTypes.startp = _startpos__8_; - MenhirLib.EngineTypes.endp = _endpos__8_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.semv = params; + MenhirLib.EngineTypes.startp = _startpos_params_; + MenhirLib.EngineTypes.endp = _endpos_params_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = virt; + MenhirLib.EngineTypes.startp = _startpos_virt_; + MenhirLib.EngineTypes.endp = _endpos_virt_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined1; MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; @@ -28107,87 +28498,72 @@ module Tables = struct }; }; } = _menhir_stack in - let _11 : (Parsetree.expression) = Obj.magic _11 in - let _10 : unit = Obj.magic _10 in - let _9 : (Parsetree.core_type) = Obj.magic _9 in - let _8 : unit = Obj.magic _8 in - let xs : (string Asttypes.loc list) = Obj.magic xs in + let xs : (Parsetree.class_description list) = Obj.magic xs in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let cty : (Parsetree.class_type) = Obj.magic cty in let _6 : unit = Obj.magic _6 in - let _5 : unit = Obj.magic _5 in - let _1_inlined1 : ( -# 797 "parsing/parser.mly" + let _1_inlined2 : ( +# 785 "parsing/parser.mly" (string) -# 28121 "parsing/parser.ml" - ) = Obj.magic _1_inlined1 in - let _3 : (Asttypes.private_flag) = Obj.magic _3 in - let _1 : (Parsetree.attributes) = Obj.magic _1 in +# 28509 "parsing/parser.ml" + ) = Obj.magic _1_inlined2 in + let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in + let virt : (Asttypes.virtual_flag) = Obj.magic virt in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__11_ in + let _endpos = _endpos_xs_ in let _v = - let _7 = -# 2679 "parsing/parser.mly" - ( xs ) -# 28132 "parsing/parser.ml" - in - let _startpos__7_ = _startpos_xs_ in - let _4 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _1 = -# 3765 "parsing/parser.mly" - ( _1 ) -# 28140 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in + let x = + let attrs2 = + let _1 = _1_inlined3 in + +# 4282 "parsing/parser.mly" + ( _1 ) +# 28525 "parsing/parser.ml" + + in + let _endpos_attrs2_ = _endpos__1_inlined3_ in + let id = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 28537 "parsing/parser.ml" + + in + let attrs1 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 28545 "parsing/parser.ml" + + in + let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 28148 "parsing/parser.ml" +# 2245 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let docs = symbol_docs _sloc in + let text = symbol_text _symbolstartpos in + Ci.mk id cty ~virt ~params ~attrs ~loc ~text ~docs + ) +# 28560 "parsing/parser.ml" in - let _startpos__4_ = _startpos__1_inlined1_ in - let _2 = -# 4114 "parsing/parser.mly" - ( _1 ) -# 28155 "parsing/parser.ml" - in - let (_endpos__2_, _startpos__2_) = (_endpos__1_, _startpos__1_) in - let _1 = -# 4016 "parsing/parser.mly" - ( Fresh ) -# 28161 "parsing/parser.ml" - in - let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in - let _endpos = _endpos__11_ in - let _symbolstartpos = if _startpos__1_ != _endpos__1_ then - _startpos__1_ - else - if _startpos__2_ != _endpos__2_ then - _startpos__2_ - else - if _startpos__3_ != _endpos__3_ then - _startpos__3_ - else - _startpos__4_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 2118 "parsing/parser.mly" - ( let poly_exp_loc = (_startpos__7_, _endpos__11_) in - let poly_exp = - let exp, poly = - (* it seems odd to use the global ~loc here while poly_exp_loc - is tighter, but this is what ocamlyacc does; - TODO improve parser.mly *) - wrap_type_annotation ~loc:_sloc _7 _9 _11 in - ghexp ~loc:poly_exp_loc (Pexp_poly(exp, Some poly)) in - (_4, _3, - Cfk_concrete (_1, poly_exp)), _2 ) -# 28188 "parsing/parser.ml" - : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * - Parsetree.class_field_kind) * - Parsetree.attributes)) +# 219 "" + ( x :: xs ) +# 28566 "parsing/parser.ml" + : (Parsetree.class_description list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28196,66 +28572,72 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.class_type_declaration list) = +# 216 "" + ( [] ) +# 28585 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _11; - MenhirLib.EngineTypes.startp = _startpos__11_; - MenhirLib.EngineTypes.endp = _endpos__11_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _10; - MenhirLib.EngineTypes.startp = _startpos__10_; - MenhirLib.EngineTypes.endp = _endpos__10_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _9; - MenhirLib.EngineTypes.startp = _startpos__9_; - MenhirLib.EngineTypes.endp = _endpos__9_; + MenhirLib.EngineTypes.semv = csig; + MenhirLib.EngineTypes.startp = _startpos_csig_; + MenhirLib.EngineTypes.endp = _endpos_csig_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _8; - MenhirLib.EngineTypes.startp = _startpos__8_; - MenhirLib.EngineTypes.endp = _endpos__8_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.semv = params; + MenhirLib.EngineTypes.startp = _startpos_params_; + MenhirLib.EngineTypes.endp = _endpos_params_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = virt; + MenhirLib.EngineTypes.startp = _startpos_virt_; + MenhirLib.EngineTypes.endp = _endpos_virt_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; @@ -28265,90 +28647,72 @@ module Tables = struct }; }; } = _menhir_stack in - let _11 : (Parsetree.expression) = Obj.magic _11 in - let _10 : unit = Obj.magic _10 in - let _9 : (Parsetree.core_type) = Obj.magic _9 in - let _8 : unit = Obj.magic _8 in - let xs : (string Asttypes.loc list) = Obj.magic xs in + let xs : (Parsetree.class_type_declaration list) = Obj.magic xs in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let csig : (Parsetree.class_type) = Obj.magic csig in let _6 : unit = Obj.magic _6 in - let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 28279 "parsing/parser.ml" +# 28658 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in - let _3 : (Asttypes.private_flag) = Obj.magic _3 in + let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in + let virt : (Asttypes.virtual_flag) = Obj.magic virt in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__11_ in + let _endpos = _endpos_xs_ in let _v = - let _7 = -# 2679 "parsing/parser.mly" - ( xs ) -# 28291 "parsing/parser.ml" - in - let _startpos__7_ = _startpos_xs_ in - let _4 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _1 = -# 3765 "parsing/parser.mly" - ( _1 ) -# 28299 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in + let x = + let attrs2 = + let _1 = _1_inlined3 in + +# 4282 "parsing/parser.mly" + ( _1 ) +# 28674 "parsing/parser.ml" + + in + let _endpos_attrs2_ = _endpos__1_inlined3_ in + let id = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 28686 "parsing/parser.ml" + + in + let attrs1 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 28694 "parsing/parser.ml" + + in + let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 28307 "parsing/parser.ml" - - in - let _startpos__4_ = _startpos__1_inlined2_ in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 28316 "parsing/parser.ml" +# 2284 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let docs = symbol_docs _sloc in + let text = symbol_text _symbolstartpos in + Ci.mk id csig ~virt ~params ~attrs ~loc ~text ~docs + ) +# 28709 "parsing/parser.ml" in - let (_endpos__2_, _startpos__2_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in - let _1 = -# 4017 "parsing/parser.mly" - ( Override ) -# 28323 "parsing/parser.ml" - in - let _endpos = _endpos__11_ in - let _symbolstartpos = if _startpos__1_ != _endpos__1_ then - _startpos__1_ - else - if _startpos__2_ != _endpos__2_ then - _startpos__2_ - else - if _startpos__3_ != _endpos__3_ then - _startpos__3_ - else - _startpos__4_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 2118 "parsing/parser.mly" - ( let poly_exp_loc = (_startpos__7_, _endpos__11_) in - let poly_exp = - let exp, poly = - (* it seems odd to use the global ~loc here while poly_exp_loc - is tighter, but this is what ocamlyacc does; - TODO improve parser.mly *) - wrap_type_annotation ~loc:_sloc _7 _9 _11 in - ghexp ~loc:poly_exp_loc (Pexp_poly(exp, Some poly)) in - (_4, _3, - Cfk_concrete (_1, poly_exp)), _2 ) -# 28349 "parsing/parser.ml" - : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * - Parsetree.class_field_kind) * - Parsetree.attributes)) +# 219 "" + ( x :: xs ) +# 28715 "parsing/parser.ml" + : (Parsetree.class_type_declaration list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28359,25 +28723,14 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : ( -# 797 "parsing/parser.mly" - (string) -# 28373 "parsing/parser.ml" - ) = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Longident.t) = -# 3869 "parsing/parser.mly" - ( Lident _1 ) -# 28381 "parsing/parser.ml" + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.module_binding list) = +# 216 "" + ( [] ) +# 28734 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28390,38 +28743,101 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = body; + MenhirLib.EngineTypes.startp = _startpos_body_; + MenhirLib.EngineTypes.endp = _endpos_body_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; }; } = _menhir_stack in - let _3 : ( -# 797 "parsing/parser.mly" - (string) -# 28414 "parsing/parser.ml" - ) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let xs : (Parsetree.module_binding list) = Obj.magic xs in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let body : (Parsetree.module_expr) = Obj.magic body in + let _1_inlined2 : (string option) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Longident.t) = -# 3870 "parsing/parser.mly" - ( Ldot(_1,_3) ) -# 28424 "parsing/parser.ml" - in + let _endpos = _endpos_xs_ in + let _v = + let x = + let attrs2 = + let _1 = _1_inlined3 in + +# 4282 "parsing/parser.mly" + ( _1 ) +# 28798 "parsing/parser.ml" + + in + let _endpos_attrs2_ = _endpos__1_inlined3_ in + let name = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 28810 "parsing/parser.ml" + + in + let attrs1 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 28818 "parsing/parser.ml" + + in + let _endpos = _endpos_attrs2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1612 "parsing/parser.mly" + ( + let loc = make_loc _sloc in + let attrs = attrs1 @ attrs2 in + let docs = symbol_docs _sloc in + let text = symbol_text _symbolstartpos in + Mb.mk name body ~attrs ~loc ~text ~docs + ) +# 28833 "parsing/parser.ml" + + in + ( +# 219 "" + ( x :: xs ) +# 28839 "parsing/parser.ml" + : (Parsetree.module_binding list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -28431,25 +28847,14 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : ( -# 848 "parsing/parser.mly" - (string) -# 28445 "parsing/parser.ml" - ) = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Longident.t) = -# 3869 "parsing/parser.mly" - ( Lident _1 ) -# 28453 "parsing/parser.ml" + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.module_declaration list) = +# 216 "" + ( [] ) +# 28858 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28462,38 +28867,108 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = mty; + MenhirLib.EngineTypes.startp = _startpos_mty_; + MenhirLib.EngineTypes.endp = _endpos_mty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; }; }; } = _menhir_stack in - let _3 : ( -# 848 "parsing/parser.mly" - (string) -# 28486 "parsing/parser.ml" - ) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let xs : (Parsetree.module_declaration list) = Obj.magic xs in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let mty : (Parsetree.module_type) = Obj.magic mty in + let _4 : unit = Obj.magic _4 in + let _1_inlined2 : (string option) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Longident.t) = -# 3870 "parsing/parser.mly" - ( Ldot(_1,_3) ) -# 28496 "parsing/parser.ml" - in + let _endpos = _endpos_xs_ in + let _v = + let x = + let attrs2 = + let _1 = _1_inlined3 in + +# 4282 "parsing/parser.mly" + ( _1 ) +# 28929 "parsing/parser.ml" + + in + let _endpos_attrs2_ = _endpos__1_inlined3_ in + let name = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 28941 "parsing/parser.ml" + + in + let attrs1 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 28949 "parsing/parser.ml" + + in + let _endpos = _endpos_attrs2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1895 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + let docs = symbol_docs _sloc in + let loc = make_loc _sloc in + let text = symbol_text _symbolstartpos in + Md.mk name mty ~attrs ~loc ~text ~docs + ) +# 28964 "parsing/parser.ml" + + in + ( +# 219 "" + ( x :: xs ) +# 28970 "parsing/parser.ml" + : (Parsetree.module_declaration list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -28503,29 +28978,15 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Asttypes.label) = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _1 = -# 3907 "parsing/parser.mly" - ( _1 ) -# 28522 "parsing/parser.ml" - in - ( -# 3869 "parsing/parser.mly" - ( Lident _1 ) -# 28527 "parsing/parser.ml" - : (Longident.t)) - in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.attributes) = +# 216 "" + ( [] ) +# 28989 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -28537,48 +28998,27 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let xs : (Parsetree.attributes) = Obj.magic xs in + let x : (Parsetree.attribute) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v = - let _1 = - let _1 = -# 3849 "parsing/parser.mly" - ( "::" ) -# 28569 "parsing/parser.ml" - in - -# 3907 "parsing/parser.mly" - ( _1 ) -# 28574 "parsing/parser.ml" - - in - ( -# 3869 "parsing/parser.mly" - ( Lident _1 ) -# 28580 "parsing/parser.ml" - : (Longident.t)) - in + let _startpos = _startpos_x_ in + let _endpos = _endpos_xs_ in + let _v : (Parsetree.attributes) = +# 219 "" + ( x :: xs ) +# 29021 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -28588,29 +29028,15 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Asttypes.label) = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _1 = -# 3907 "parsing/parser.mly" - ( _1 ) -# 28607 "parsing/parser.ml" - in - ( -# 3869 "parsing/parser.mly" - ( Lident _1 ) -# 28612 "parsing/parser.ml" - : (Longident.t)) - in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.type_declaration list) = +# 216 "" + ( [] ) +# 29039 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -28622,45 +29048,141 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs_inlined1; + MenhirLib.EngineTypes.startp = _startpos_xs_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_xs_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = kind_priv_manifest; + MenhirLib.EngineTypes.startp = _startpos_kind_priv_manifest_; + MenhirLib.EngineTypes.endp = _endpos_kind_priv_manifest_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = params; + MenhirLib.EngineTypes.startp = _startpos_params_; + MenhirLib.EngineTypes.endp = _endpos_params_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; }; }; } = _menhir_stack in - let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let xs : (Parsetree.type_declaration list) = Obj.magic xs in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let xs_inlined1 : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs_inlined1 in + let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in + let _1_inlined2 : ( +# 785 "parsing/parser.mly" + (string) +# 29106 "parsing/parser.ml" + ) = Obj.magic _1_inlined2 in + let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined1_ in + let _endpos = _endpos_xs_ in let _v = - let _3 = - let _1 = _1_inlined1 in - -# 3907 "parsing/parser.mly" - ( _1 ) -# 28655 "parsing/parser.ml" - - in - ( -# 3870 "parsing/parser.mly" - ( Ldot(_1,_3) ) -# 28661 "parsing/parser.ml" - : (Longident.t)) - in - { + let x = + let xs = xs_inlined1 in + let attrs2 = + let _1 = _1_inlined3 in + +# 4282 "parsing/parser.mly" + ( _1 ) +# 29122 "parsing/parser.ml" + + in + let _endpos_attrs2_ = _endpos__1_inlined3_ in + let cstrs = + let _1 = + let xs = +# 264 "" + ( List.rev xs ) +# 29131 "parsing/parser.ml" + in + +# 1056 "parsing/parser.mly" + ( xs ) +# 29136 "parsing/parser.ml" + + in + +# 3300 "parsing/parser.mly" + ( _1 ) +# 29142 "parsing/parser.ml" + + in + let id = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 29153 "parsing/parser.ml" + + in + let attrs1 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 29161 "parsing/parser.ml" + + in + let _endpos = _endpos_attrs2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3289 "parsing/parser.mly" + ( + let (kind, priv, manifest) = kind_priv_manifest in + let docs = symbol_docs _sloc in + let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let text = symbol_text _symbolstartpos in + Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text + ) +# 29177 "parsing/parser.ml" + + in + ( +# 219 "" + ( x :: xs ) +# 29183 "parsing/parser.ml" + : (Parsetree.type_declaration list)) + in + { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; MenhirLib.EngineTypes.startp = _startpos; @@ -28669,64 +29191,15 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2_inlined1; - MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v = - let _3 = - let _1 = -# 3849 "parsing/parser.mly" - ( "::" ) -# 28717 "parsing/parser.ml" - in - -# 3907 "parsing/parser.mly" - ( _1 ) -# 28722 "parsing/parser.ml" - - in - ( -# 3870 "parsing/parser.mly" - ( Ldot(_1,_3) ) -# 28728 "parsing/parser.ml" - : (Longident.t)) - in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.type_declaration list) = +# 216 "" + ( [] ) +# 29202 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -28738,43 +29211,151 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs_inlined1; + MenhirLib.EngineTypes.startp = _startpos_xs_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_xs_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = params; + MenhirLib.EngineTypes.startp = _startpos_params_; + MenhirLib.EngineTypes.endp = _endpos_params_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; }; }; } = _menhir_stack in - let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let xs : (Parsetree.type_declaration list) = Obj.magic xs in + let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in + let xs_inlined1 : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs_inlined1 in + let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in + let _1_inlined3 : unit = Obj.magic _1_inlined3 in + let _1_inlined2 : ( +# 785 "parsing/parser.mly" + (string) +# 29276 "parsing/parser.ml" + ) = Obj.magic _1_inlined2 in + let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined1_ in + let _endpos = _endpos_xs_ in let _v = - let _3 = - let _1 = _1_inlined1 in + let x = + let xs = xs_inlined1 in + let attrs2 = + let _1 = _1_inlined4 in + +# 4282 "parsing/parser.mly" + ( _1 ) +# 29292 "parsing/parser.ml" + + in + let _endpos_attrs2_ = _endpos__1_inlined4_ in + let cstrs = + let _1 = + let xs = +# 264 "" + ( List.rev xs ) +# 29301 "parsing/parser.ml" + in + +# 1056 "parsing/parser.mly" + ( xs ) +# 29306 "parsing/parser.ml" + + in + +# 3300 "parsing/parser.mly" + ( _1 ) +# 29312 "parsing/parser.ml" + + in + let kind_priv_manifest = +# 3335 "parsing/parser.mly" + ( _2 ) +# 29318 "parsing/parser.ml" + in + let id = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 29328 "parsing/parser.ml" + + in + let attrs1 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 29336 "parsing/parser.ml" + + in + let _endpos = _endpos_attrs2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 3907 "parsing/parser.mly" - ( _1 ) -# 28771 "parsing/parser.ml" +# 3289 "parsing/parser.mly" + ( + let (kind, priv, manifest) = kind_priv_manifest in + let docs = symbol_docs _sloc in + let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let text = symbol_text _symbolstartpos in + Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text + ) +# 29352 "parsing/parser.ml" in ( -# 3870 "parsing/parser.mly" - ( Ldot(_1,_3) ) -# 28777 "parsing/parser.ml" - : (Longident.t)) +# 219 "" + ( x :: xs ) +# 29358 "parsing/parser.ml" + : (Parsetree.type_declaration list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28785,21 +29366,14 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Asttypes.label) = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Longident.t) = -# 3869 "parsing/parser.mly" - ( Lident _1 ) -# 28803 "parsing/parser.ml" + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.attributes) = +# 216 "" + ( [] ) +# 29377 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28812,33 +29386,26 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _3 : (Asttypes.label) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let xs : (Parsetree.attributes) = Obj.magic xs in + let x : (Parsetree.attribute) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Longident.t) = -# 3870 "parsing/parser.mly" - ( Ldot(_1,_3) ) -# 28842 "parsing/parser.ml" + let _startpos = _startpos_x_ in + let _endpos = _endpos_xs_ in + let _v : (Parsetree.attributes) = +# 219 "" + ( x :: xs ) +# 29409 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28849,25 +29416,14 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : ( -# 797 "parsing/parser.mly" - (string) -# 28863 "parsing/parser.ml" - ) = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Longident.t) = -# 3869 "parsing/parser.mly" - ( Lident _1 ) -# 28871 "parsing/parser.ml" + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.signature_item list list) = +# 216 "" + ( [] ) +# 29427 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28880,38 +29436,44 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _3 : ( -# 797 "parsing/parser.mly" - (string) -# 28904 "parsing/parser.ml" - ) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let xs : (Parsetree.signature_item list list) = Obj.magic xs in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Longident.t) = -# 3870 "parsing/parser.mly" - ( Ldot(_1,_3) ) -# 28914 "parsing/parser.ml" - in + let _endpos = _endpos_xs_ in + let _v = + let x = + let _1 = + let _startpos = _startpos__1_ in + +# 982 "parsing/parser.mly" + ( text_sig _startpos ) +# 29463 "parsing/parser.ml" + + in + +# 1752 "parsing/parser.mly" + ( _1 ) +# 29469 "parsing/parser.ml" + + in + ( +# 219 "" + ( x :: xs ) +# 29475 "parsing/parser.ml" + : (Parsetree.signature_item list list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -28922,25 +29484,45 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; } = _menhir_stack in - let _1 : ( -# 848 "parsing/parser.mly" - (string) -# 28935 "parsing/parser.ml" - ) = Obj.magic _1 in + let xs : (Parsetree.signature_item list list) = Obj.magic xs in + let _1 : (Parsetree.signature_item) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Longident.t) = -# 3869 "parsing/parser.mly" - ( Lident _1 ) -# 28943 "parsing/parser.ml" - in + let _endpos = _endpos_xs_ in + let _v = + let x = + let _1 = + let _startpos = _startpos__1_ in + +# 980 "parsing/parser.mly" + ( text_sig _startpos @ [_1] ) +# 29512 "parsing/parser.ml" + + in + +# 1752 "parsing/parser.mly" + ( _1 ) +# 29518 "parsing/parser.ml" + + in + ( +# 219 "" + ( x :: xs ) +# 29524 "parsing/parser.ml" + : (Parsetree.signature_item list list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -28950,39 +29532,14 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let _3 : ( -# 848 "parsing/parser.mly" - (string) -# 28976 "parsing/parser.ml" - ) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Longident.t) = -# 3870 "parsing/parser.mly" - ( Ldot(_1,_3) ) -# 28986 "parsing/parser.ml" + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.structure_item list list) = +# 216 "" + ( [] ) +# 29543 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28994,21 +29551,64 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; } = _menhir_stack in - let _1 : (Asttypes.label) = Obj.magic _1 in + let xs : (Parsetree.structure_item list list) = Obj.magic xs in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Longident.t) = -# 3869 "parsing/parser.mly" - ( Lident _1 ) -# 29011 "parsing/parser.ml" - in + let _endpos = _endpos_xs_ in + let _v = + let x = + let _1 = + let ys = + let items = +# 1042 "parsing/parser.mly" + ( [] ) +# 29579 "parsing/parser.ml" + in + +# 1493 "parsing/parser.mly" + ( items ) +# 29584 "parsing/parser.ml" + + in + let xs = + let _startpos = _startpos__1_ in + +# 978 "parsing/parser.mly" + ( text_str _startpos ) +# 29592 "parsing/parser.ml" + + in + +# 278 "" + ( xs @ ys ) +# 29598 "parsing/parser.ml" + + in + +# 1509 "parsing/parser.mly" + ( _1 ) +# 29604 "parsing/parser.ml" + + in + ( +# 219 "" + ( x :: xs ) +# 29610 "parsing/parser.ml" + : (Parsetree.structure_item list list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -29020,83 +29620,19 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let _3 : (Asttypes.label) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Longident.t) = -# 3870 "parsing/parser.mly" - ( Ldot(_1,_3) ) -# 29050 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Longident.t) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Longident.t) = -# 3885 "parsing/parser.mly" - ( _1 ) -# 29075 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = e; + MenhirLib.EngineTypes.startp = _startpos_e_; + MenhirLib.EngineTypes.endp = _endpos_e_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -29107,22 +29643,88 @@ module Tables = struct }; }; } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let _3 : (Longident.t) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let xs : (Parsetree.structure_item list list) = Obj.magic xs in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let e : (Parsetree.expression) = Obj.magic e in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in + let _endpos = _endpos_xs_ in let _v = - let _endpos = _endpos__4_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let x = + let _1 = + let ys = + let (_endpos__1_, _1) = (_endpos__1_inlined1_, _1_inlined1) in + let items = + let x = + let _1 = + let _1 = + let attrs = +# 4282 "parsing/parser.mly" + ( _1 ) +# 29666 "parsing/parser.ml" + in + +# 1500 "parsing/parser.mly" + ( mkstrexp e attrs ) +# 29671 "parsing/parser.ml" + + in + let _startpos__1_ = _startpos_e_ in + let _startpos = _startpos__1_ in + +# 976 "parsing/parser.mly" + ( text_str _startpos @ [_1] ) +# 29679 "parsing/parser.ml" + + in + let _startpos__1_ = _startpos_e_ in + let _endpos = _endpos__1_ in + let _startpos = _startpos__1_ in + +# 995 "parsing/parser.mly" + ( mark_rhs_docs _startpos _endpos; + _1 ) +# 29689 "parsing/parser.ml" + + in + +# 1044 "parsing/parser.mly" + ( x ) +# 29695 "parsing/parser.ml" + + in + +# 1493 "parsing/parser.mly" + ( items ) +# 29701 "parsing/parser.ml" + + in + let xs = + let _startpos = _startpos__1_ in + +# 978 "parsing/parser.mly" + ( text_str _startpos ) +# 29709 "parsing/parser.ml" + + in + +# 278 "" + ( xs @ ys ) +# 29715 "parsing/parser.ml" + + in + +# 1509 "parsing/parser.mly" + ( _1 ) +# 29721 "parsing/parser.ml" + + in ( -# 3887 "parsing/parser.mly" - ( lapply ~loc:_sloc _1 _3 ) -# 29125 "parsing/parser.ml" - : (Longident.t)) +# 219 "" + ( x :: xs ) +# 29727 "parsing/parser.ml" + : (Parsetree.structure_item list list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29135,36 +29737,43 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let xs : (Parsetree.structure_item list list) = Obj.magic xs in + let _1 : (Parsetree.structure_item) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _endpos = _endpos_xs_ in let _v = - let _loc__3_ = (_startpos__3_, _endpos__3_) in + let x = + let _1 = + let _startpos = _startpos__1_ in + +# 976 "parsing/parser.mly" + ( text_str _startpos @ [_1] ) +# 29764 "parsing/parser.ml" + + in + +# 1509 "parsing/parser.mly" + ( _1 ) +# 29770 "parsing/parser.ml" + + in ( -# 3889 "parsing/parser.mly" - ( expecting _loc__3_ "module path" ) -# 29167 "parsing/parser.ml" - : (Longident.t)) +# 219 "" + ( x :: xs ) +# 29776 "parsing/parser.ml" + : (Parsetree.structure_item list list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29175,21 +29784,14 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Longident.t) = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Longident.t) = -# 3882 "parsing/parser.mly" - ( _1 ) -# 29193 "parsing/parser.ml" + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.class_type_field list list) = +# 216 "" + ( [] ) +# 29795 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29202,9 +29804,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = me; - MenhirLib.EngineTypes.startp = _startpos_me_; - MenhirLib.EngineTypes.endp = _endpos_me_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -29213,15 +29815,43 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let me : (Parsetree.module_expr) = Obj.magic me in - let _1 : unit = Obj.magic _1 in + let xs : (Parsetree.class_type_field list list) = Obj.magic xs in + let _1 : (Parsetree.class_type_field) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_me_ in - let _v : (Parsetree.module_expr) = -# 1581 "parsing/parser.mly" - ( me ) -# 29225 "parsing/parser.ml" + let _endpos = _endpos_xs_ in + let _v = + let x = + let _startpos = _startpos__1_ in + +# 990 "parsing/parser.mly" + ( text_csig _startpos @ [_1] ) +# 29830 "parsing/parser.ml" + + in + ( +# 219 "" + ( x :: xs ) +# 29836 "parsing/parser.ml" + : (Parsetree.class_type_field list list)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.class_field list list) = +# 216 "" + ( [] ) +# 29855 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29234,9 +29864,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -29245,18 +29875,25 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let xs : (Parsetree.class_field list list) = Obj.magic xs in + let _1 : (Parsetree.class_field) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in + let _endpos = _endpos_xs_ in let _v = - let _loc__1_ = (_startpos__1_, _endpos__1_) in + let x = + let _startpos = _startpos__1_ in + +# 988 "parsing/parser.mly" + ( text_cstr _startpos @ [_1] ) +# 29890 "parsing/parser.ml" + + in ( -# 1583 "parsing/parser.mly" - ( expecting _loc__1_ "=" ) -# 29259 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 219 "" + ( x :: xs ) +# 29896 "parsing/parser.ml" + : (Parsetree.class_field list list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29267,61 +29904,15 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = me; - MenhirLib.EngineTypes.startp = _startpos_me_; - MenhirLib.EngineTypes.endp = _endpos_me_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = mty; - MenhirLib.EngineTypes.startp = _startpos_mty_; - MenhirLib.EngineTypes.endp = _endpos_mty_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - } = _menhir_stack in - let me : (Parsetree.module_expr) = Obj.magic me in - let _3 : unit = Obj.magic _3 in - let mty : (Parsetree.module_type) = Obj.magic mty in - let _1 : unit = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_me_ in - let _v = - let _1 = - let _1 = -# 1586 "parsing/parser.mly" - ( Pmod_constraint(me, mty) ) -# 29308 "parsing/parser.ml" - in - let _endpos__1_ = _endpos_me_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1027 "parsing/parser.mly" - ( mkmod ~loc:_sloc _1 ) -# 29317 "parsing/parser.ml" - - in - ( -# 1590 "parsing/parser.mly" - ( _1 ) -# 29323 "parsing/parser.ml" - : (Parsetree.module_expr)) - in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.structure_item list list) = +# 216 "" + ( [] ) +# 29915 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -29333,45 +29924,36 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = body; - MenhirLib.EngineTypes.startp = _startpos_body_; - MenhirLib.EngineTypes.endp = _endpos_body_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = arg_and_pos; - MenhirLib.EngineTypes.startp = _startpos_arg_and_pos_; - MenhirLib.EngineTypes.endp = _endpos_arg_and_pos_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let body : (Parsetree.module_expr) = Obj.magic body in - let arg_and_pos : (Lexing.position * Parsetree.functor_parameter) = Obj.magic arg_and_pos in + let xs : (Parsetree.structure_item list list) = Obj.magic xs in + let _1 : (Parsetree.structure_item) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_arg_and_pos_ in - let _endpos = _endpos_body_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos_xs_ in let _v = - let _1 = - let _1 = -# 1588 "parsing/parser.mly" - ( let (_, arg) = arg_and_pos in - Pmod_functor(arg, body) ) -# 29359 "parsing/parser.ml" - in - let (_endpos__1_, _startpos__1_) = (_endpos_body_, _startpos_arg_and_pos_) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let x = + let _startpos = _startpos__1_ in -# 1027 "parsing/parser.mly" - ( mkmod ~loc:_sloc _1 ) -# 29368 "parsing/parser.ml" +# 976 "parsing/parser.mly" + ( text_str _startpos @ [_1] ) +# 29950 "parsing/parser.ml" in ( -# 1590 "parsing/parser.mly" - ( _1 ) -# 29374 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 219 "" + ( x :: xs ) +# 29956 "parsing/parser.ml" + : (Parsetree.structure_item list list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29382,28 +29964,14 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = mty; - MenhirLib.EngineTypes.startp = _startpos_mty_; - MenhirLib.EngineTypes.endp = _endpos_mty_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let mty : (Parsetree.module_type) = Obj.magic mty in - let _1 : unit = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_mty_ in - let _v : (Parsetree.module_type) = -# 1831 "parsing/parser.mly" - ( mty ) -# 29407 "parsing/parser.ml" + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.toplevel_phrase list list) = +# 216 "" + ( [] ) +# 29975 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29416,9 +29984,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -29427,69 +29995,43 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in + let xs : (Parsetree.toplevel_phrase list list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v = - let _loc__1_ = (_startpos__1_, _endpos__1_) in - ( -# 1833 "parsing/parser.mly" - ( expecting _loc__1_ ":" ) -# 29441 "parsing/parser.ml" - : (Parsetree.module_type)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = body; - MenhirLib.EngineTypes.startp = _startpos_body_; - MenhirLib.EngineTypes.endp = _endpos_body_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = arg_and_pos; - MenhirLib.EngineTypes.startp = _startpos_arg_and_pos_; - MenhirLib.EngineTypes.endp = _endpos_arg_and_pos_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let body : (Parsetree.module_type) = Obj.magic body in - let arg_and_pos : (Lexing.position * Parsetree.functor_parameter) = Obj.magic arg_and_pos in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_arg_and_pos_ in - let _endpos = _endpos_body_ in + let _endpos = _endpos_xs_ in let _v = - let _1 = - let _1 = -# 1836 "parsing/parser.mly" - ( let (_, arg) = arg_and_pos in - Pmty_functor(arg, body) ) -# 29477 "parsing/parser.ml" - in - let (_endpos__1_, _startpos__1_) = (_endpos_body_, _startpos_arg_and_pos_) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let x = + let _1 = + let x = + let _1 = +# 1042 "parsing/parser.mly" + ( [] ) +# 30011 "parsing/parser.ml" + in + +# 1295 "parsing/parser.mly" + ( _1 ) +# 30016 "parsing/parser.ml" + + in + +# 188 "" + ( x ) +# 30022 "parsing/parser.ml" + + in -# 1029 "parsing/parser.mly" - ( mkmty ~loc:_sloc _1 ) -# 29486 "parsing/parser.ml" +# 1307 "parsing/parser.mly" + ( _1 ) +# 30028 "parsing/parser.ml" in ( -# 1839 "parsing/parser.mly" - ( _1 ) -# 29492 "parsing/parser.ml" - : (Parsetree.module_type)) +# 219 "" + ( x :: xs ) +# 30034 "parsing/parser.ml" + : (Parsetree.toplevel_phrase list list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29502,19 +30044,19 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = s; - MenhirLib.EngineTypes.startp = _startpos_s_; - MenhirLib.EngineTypes.endp = _endpos_s_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = e; + MenhirLib.EngineTypes.startp = _startpos_e_; + MenhirLib.EngineTypes.endp = _endpos_e_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -29525,30 +30067,76 @@ module Tables = struct }; }; } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let s : (Parsetree.structure) = Obj.magic s in + let xs : (Parsetree.toplevel_phrase list list) = Obj.magic xs in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let e : (Parsetree.expression) = Obj.magic e in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in + let _endpos = _endpos_xs_ in let _v = - let attrs = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" + let x = + let _1 = + let x = + let _1 = _1_inlined1 in + let _1 = + let x = + let _1 = + let _1 = + let attrs = +# 4282 "parsing/parser.mly" ( _1 ) -# 29542 "parsing/parser.ml" +# 30090 "parsing/parser.ml" + in + +# 1500 "parsing/parser.mly" + ( mkstrexp e attrs ) +# 30095 "parsing/parser.ml" + + in + +# 986 "parsing/parser.mly" + ( Ptop_def [_1] ) +# 30101 "parsing/parser.ml" + + in + let _startpos__1_ = _startpos_e_ in + let _startpos = _startpos__1_ in + +# 984 "parsing/parser.mly" + ( text_def _startpos @ [_1] ) +# 30109 "parsing/parser.ml" + + in + +# 1044 "parsing/parser.mly" + ( x ) +# 30115 "parsing/parser.ml" + + in + +# 1295 "parsing/parser.mly" + ( _1 ) +# 30121 "parsing/parser.ml" + + in + +# 188 "" + ( x ) +# 30127 "parsing/parser.ml" + + in + +# 1307 "parsing/parser.mly" + ( _1 ) +# 30133 "parsing/parser.ml" in - let _endpos = _endpos__4_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 1419 "parsing/parser.mly" - ( mkmod ~loc:_sloc ~attrs (Pmod_structure s) ) -# 29551 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 219 "" + ( x :: xs ) +# 30139 "parsing/parser.ml" + : (Parsetree.toplevel_phrase list list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29561,52 +30149,48 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.structure) = Obj.magic _3 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let xs : (Parsetree.toplevel_phrase list list) = Obj.magic xs in + let _1 : (Parsetree.structure_item) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in + let _endpos = _endpos_xs_ in let _v = - let _2 = - let _1 = _1_inlined1 in + let x = + let _1 = + let _1 = +# 986 "parsing/parser.mly" + ( Ptop_def [_1] ) +# 30175 "parsing/parser.ml" + in + let _startpos = _startpos__1_ in + +# 984 "parsing/parser.mly" + ( text_def _startpos @ [_1] ) +# 30181 "parsing/parser.ml" + + in -# 4114 "parsing/parser.mly" - ( _1 ) -# 29601 "parsing/parser.ml" +# 1307 "parsing/parser.mly" + ( _1 ) +# 30187 "parsing/parser.ml" in - let _loc__4_ = (_startpos__4_, _endpos__4_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1421 "parsing/parser.mly" - ( unclosed "struct" _loc__1_ "end" _loc__4_ ) -# 29609 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 219 "" + ( x :: xs ) +# 30193 "parsing/parser.ml" + : (Parsetree.toplevel_phrase list list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29619,9 +30203,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -29630,18 +30214,42 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let xs : (Parsetree.toplevel_phrase list list) = Obj.magic xs in + let _1 : (Parsetree.toplevel_phrase) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in + let _endpos = _endpos_xs_ in let _v = - let _loc__1_ = (_startpos__1_, _endpos__1_) in + let x = + let _1 = + let _1 = + let _endpos = _endpos__1_ in + let _startpos = _startpos__1_ in + +# 995 "parsing/parser.mly" + ( mark_rhs_docs _startpos _endpos; + _1 ) +# 30233 "parsing/parser.ml" + + in + let _startpos = _startpos__1_ in + +# 984 "parsing/parser.mly" + ( text_def _startpos @ [_1] ) +# 30240 "parsing/parser.ml" + + in + +# 1307 "parsing/parser.mly" + ( _1 ) +# 30246 "parsing/parser.ml" + + in ( -# 1423 "parsing/parser.mly" - ( expecting _loc__1_ "struct" ) -# 29644 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 219 "" + ( x :: xs ) +# 30252 "parsing/parser.ml" + : (Parsetree.toplevel_phrase list list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29654,72 +30262,73 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = me; - MenhirLib.EngineTypes.startp = _startpos_me_; - MenhirLib.EngineTypes.endp = _endpos_me_; + MenhirLib.EngineTypes.semv = opat; + MenhirLib.EngineTypes.startp = _startpos_opat_; + MenhirLib.EngineTypes.endp = _endpos_opat_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = octy; + MenhirLib.EngineTypes.startp = _startpos_octy_; + MenhirLib.EngineTypes.endp = _endpos_octy_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let me : (Parsetree.module_expr) = Obj.magic me in - let _4 : unit = Obj.magic _4 in - let _1_inlined2 : ((Lexing.position * Parsetree.functor_parameter) list) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let opat : (Parsetree.pattern option) = Obj.magic opat in + let octy : (Parsetree.core_type option) = Obj.magic octy in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_me_ in + let _endpos = _endpos_opat_ in let _v = - let args = - let _1 = _1_inlined2 in - -# 1385 "parsing/parser.mly" - ( _1 ) -# 29701 "parsing/parser.ml" - - in - let attrs = - let _1 = _1_inlined1 in + let _2 = +# 123 "" + ( None ) +# 30293 "parsing/parser.ml" + in + let x = + let label = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 30303 "parsing/parser.ml" + + in + let _startpos_label_ = _startpos__1_ in + let _endpos = _endpos_opat_ in + let _symbolstartpos = _startpos_label_ in + let _sloc = (_symbolstartpos, _endpos) in -# 4114 "parsing/parser.mly" - ( _1 ) -# 29709 "parsing/parser.ml" +# 3175 "parsing/parser.mly" + ( let constraint_loc, label, pat = + match opat with + | None -> + (* No pattern; this is a pun. Desugar it. + But that the pattern was there and the label reconstructed (which + piece of AST is marked as ghost is important for warning + emission). *) + _sloc, make_ghost label, pat_of_label label + | Some pat -> + (_startpos_octy_, _endpos), label, pat + in + label, mkpat_opt_constraint ~loc:constraint_loc pat octy + ) +# 30325 "parsing/parser.ml" in - let _endpos = _endpos_me_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 1425 "parsing/parser.mly" - ( wrap_mod_attrs ~loc:_sloc attrs ( - List.fold_left (fun acc (startpos, arg) -> - mkmod ~loc:(startpos, _endpos) (Pmod_functor (arg, acc)) - ) me args - ) ) -# 29722 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 1232 "parsing/parser.mly" + ( [x], None ) +# 30331 "parsing/parser.ml" + : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29728,109 +30337,84 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = me; - MenhirLib.EngineTypes.startp = _startpos_me_; - MenhirLib.EngineTypes.endp = _endpos_me_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let me : (Parsetree.module_expr) = Obj.magic me in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_me_ in - let _endpos = _endpos_me_ in - let _v : (Parsetree.module_expr) = -# 1431 "parsing/parser.mly" - ( me ) -# 29748 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = attr; - MenhirLib.EngineTypes.startp = _startpos_attr_; - MenhirLib.EngineTypes.endp = _endpos_attr_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = me; - MenhirLib.EngineTypes.startp = _startpos_me_; - MenhirLib.EngineTypes.endp = _endpos_me_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = opat; + MenhirLib.EngineTypes.startp = _startpos_opat_; + MenhirLib.EngineTypes.endp = _endpos_opat_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = octy; + MenhirLib.EngineTypes.startp = _startpos_octy_; + MenhirLib.EngineTypes.endp = _endpos_octy_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; }; } = _menhir_stack in - let attr : (Parsetree.attribute) = Obj.magic attr in - let me : (Parsetree.module_expr) = Obj.magic me in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_me_ in - let _endpos = _endpos_attr_ in - let _v : (Parsetree.module_expr) = -# 1433 "parsing/parser.mly" - ( Mod.attr me attr ) -# 29780 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in + let x : unit = Obj.magic x in + let opat : (Parsetree.pattern option) = Obj.magic opat in + let octy : (Parsetree.core_type option) = Obj.magic octy in let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _endpos = _endpos_x_ in let _v = - let _1 = - let _1 = - let x = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 29812 "parsing/parser.ml" - - in + let _2 = +# 126 "" + ( Some x ) +# 30379 "parsing/parser.ml" + in + let x = + let label = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 1437 "parsing/parser.mly" - ( Pmod_ident x ) -# 29818 "parsing/parser.ml" +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 30389 "parsing/parser.ml" in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in + let _startpos_label_ = _startpos__1_ in + let _endpos = _endpos_opat_ in + let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 1027 "parsing/parser.mly" - ( mkmod ~loc:_sloc _1 ) -# 29827 "parsing/parser.ml" +# 3175 "parsing/parser.mly" + ( let constraint_loc, label, pat = + match opat with + | None -> + (* No pattern; this is a pun. Desugar it. + But that the pattern was there and the label reconstructed (which + piece of AST is marked as ghost is important for warning + emission). *) + _sloc, make_ghost label, pat_of_label label + | Some pat -> + (_startpos_octy_, _endpos), label, pat + in + label, mkpat_opt_constraint ~loc:constraint_loc pat octy + ) +# 30411 "parsing/parser.ml" in ( -# 1448 "parsing/parser.mly" - ( _1 ) -# 29833 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 1232 "parsing/parser.mly" + ( [x], None ) +# 30417 "parsing/parser.ml" + : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29843,44 +30427,89 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = me2; - MenhirLib.EngineTypes.startp = _startpos_me2_; - MenhirLib.EngineTypes.endp = _endpos_me2_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = me1; - MenhirLib.EngineTypes.startp = _startpos_me1_; - MenhirLib.EngineTypes.endp = _endpos_me1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = y; + MenhirLib.EngineTypes.startp = _startpos_y_; + MenhirLib.EngineTypes.endp = _endpos_y_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = opat; + MenhirLib.EngineTypes.startp = _startpos_opat_; + MenhirLib.EngineTypes.endp = _endpos_opat_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = octy; + MenhirLib.EngineTypes.startp = _startpos_octy_; + MenhirLib.EngineTypes.endp = _endpos_octy_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; }; } = _menhir_stack in - let me2 : (Parsetree.module_expr) = Obj.magic me2 in - let me1 : (Parsetree.module_expr) = Obj.magic me1 in + let _4 : (unit option) = Obj.magic _4 in + let y : unit = Obj.magic y in + let _2 : unit = Obj.magic _2 in + let opat : (Parsetree.pattern option) = Obj.magic opat in + let octy : (Parsetree.core_type option) = Obj.magic octy in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_me1_ in - let _endpos = _endpos_me2_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in let _v = - let _1 = - let _1 = -# 1440 "parsing/parser.mly" - ( Pmod_apply(me1, me2) ) -# 29868 "parsing/parser.ml" - in - let (_endpos__1_, _startpos__1_) = (_endpos_me2_, _startpos_me1_) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in + let x = + let label = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 30484 "parsing/parser.ml" + + in + let _startpos_label_ = _startpos__1_ in + let _endpos = _endpos_opat_ in + let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 1027 "parsing/parser.mly" - ( mkmod ~loc:_sloc _1 ) -# 29877 "parsing/parser.ml" +# 3175 "parsing/parser.mly" + ( let constraint_loc, label, pat = + match opat with + | None -> + (* No pattern; this is a pun. Desugar it. + But that the pattern was there and the label reconstructed (which + piece of AST is marked as ghost is important for warning + emission). *) + _sloc, make_ghost label, pat_of_label label + | Some pat -> + (_startpos_octy_, _endpos), label, pat + in + label, mkpat_opt_constraint ~loc:constraint_loc pat octy + ) +# 30506 "parsing/parser.ml" in ( -# 1448 "parsing/parser.mly" - ( _1 ) -# 29883 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 1234 "parsing/parser.mly" + ( [x], Some y ) +# 30512 "parsing/parser.ml" + : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29893,51 +30522,83 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = tail; + MenhirLib.EngineTypes.startp = _startpos_tail_; + MenhirLib.EngineTypes.endp = _endpos_tail_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; MenhirLib.EngineTypes.startp = _startpos__2_; MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = me; - MenhirLib.EngineTypes.startp = _startpos_me_; - MenhirLib.EngineTypes.endp = _endpos_me_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = opat; + MenhirLib.EngineTypes.startp = _startpos_opat_; + MenhirLib.EngineTypes.endp = _endpos_opat_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = octy; + MenhirLib.EngineTypes.startp = _startpos_octy_; + MenhirLib.EngineTypes.endp = _endpos_octy_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; }; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in + let tail : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option) = Obj.magic tail in let _2 : unit = Obj.magic _2 in - let me : (Parsetree.module_expr) = Obj.magic me in + let opat : (Parsetree.pattern option) = Obj.magic opat in + let octy : (Parsetree.core_type option) = Obj.magic octy in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_me_ in - let _endpos = _endpos__3_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos_tail_ in let _v = - let _1 = - let _1 = -# 1443 "parsing/parser.mly" - ( Pmod_apply_unit me ) -# 29925 "parsing/parser.ml" - in - let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_me_) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in + let x = + let label = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 30572 "parsing/parser.ml" + + in + let _startpos_label_ = _startpos__1_ in + let _endpos = _endpos_opat_ in + let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 1027 "parsing/parser.mly" - ( mkmod ~loc:_sloc _1 ) -# 29934 "parsing/parser.ml" +# 3175 "parsing/parser.mly" + ( let constraint_loc, label, pat = + match opat with + | None -> + (* No pattern; this is a pun. Desugar it. + But that the pattern was there and the label reconstructed (which + piece of AST is marked as ghost is important for warning + emission). *) + _sloc, make_ghost label, pat_of_label label + | Some pat -> + (_startpos_octy_, _endpos), label, pat + in + label, mkpat_opt_constraint ~loc:constraint_loc pat octy + ) +# 30594 "parsing/parser.ml" in ( -# 1448 "parsing/parser.mly" - ( _1 ) -# 29940 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 1238 "parsing/parser.mly" + ( let xs, y = tail in + x :: xs, y ) +# 30601 "parsing/parser.ml" + : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29949,39 +30610,35 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = ex; - MenhirLib.EngineTypes.startp = _startpos_ex_; - MenhirLib.EngineTypes.endp = _endpos_ex_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; } = _menhir_stack in - let ex : (Parsetree.extension) = Obj.magic ex in + let _3 : (Parsetree.expression) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_ex_ in - let _endpos = _endpos_ex_ in - let _v = - let _1 = - let _1 = -# 1446 "parsing/parser.mly" - ( Pmod_extension ex ) -# 29968 "parsing/parser.ml" - in - let (_endpos__1_, _startpos__1_) = (_endpos_ex_, _startpos_ex_) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1027 "parsing/parser.mly" - ( mkmod ~loc:_sloc _1 ) -# 29977 "parsing/parser.ml" - - in - ( -# 1448 "parsing/parser.mly" - ( _1 ) -# 29983 "parsing/parser.ml" - : (Parsetree.module_expr)) - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : (Parsetree.case) = +# 2787 "parsing/parser.mly" + ( Exp.case _1 _3 ) +# 30641 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -29992,24 +30649,48 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; } = _menhir_stack in - let x : ( -# 848 "parsing/parser.mly" - (string) -# 30005 "parsing/parser.ml" - ) = Obj.magic x in + let _5 : (Parsetree.expression) = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.expression) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos_x_ in - let _v : (string option) = -# 1402 "parsing/parser.mly" - ( Some x ) -# 30013 "parsing/parser.ml" + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v : (Parsetree.case) = +# 2789 "parsing/parser.mly" + ( Exp.case _1 ~guard:_3 _5 ) +# 30694 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30021,21 +30702,38 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (string option) = -# 1405 "parsing/parser.mly" - ( None ) -# 30038 "parsing/parser.ml" - in + let _endpos = _endpos__3_ in + let _v = + let _loc__3_ = (_startpos__3_, _endpos__3_) in + ( +# 2791 "parsing/parser.mly" + ( Exp.case _1 (Exp.unreachable ~loc:(make_loc _loc__3_) ()) ) +# 30735 "parsing/parser.ml" + : (Parsetree.case)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -30047,9 +30745,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.semv = tail; + MenhirLib.EngineTypes.startp = _startpos_tail_; + MenhirLib.EngineTypes.endp = _endpos_tail_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined3; @@ -30072,9 +30770,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -30088,73 +30786,134 @@ module Tables = struct }; }; } = _menhir_stack in - let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let _1_inlined3 : (Longident.t) = Obj.magic _1_inlined3 in + let tail : (Parsetree.object_field list * Asttypes.closed_flag) = Obj.magic tail in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in let _5 : unit = Obj.magic _5 in - let _1_inlined2 : ( -# 848 "parsing/parser.mly" + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : ( +# 785 "parsing/parser.mly" (string) -# 30098 "parsing/parser.ml" - ) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let ext : (string Asttypes.loc option) = Obj.magic ext in - let _1 : unit = Obj.magic _1 in +# 30799 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined4_ in + let _endpos = _endpos_tail_ in let _v = - let attrs2 = - let _1 = _1_inlined4 in - -# 4110 "parsing/parser.mly" + let head = + let _6 = + let _1 = _1_inlined3 in + +# 4286 "parsing/parser.mly" ( _1 ) -# 30112 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined4_ in - let body = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" +# 30811 "parsing/parser.ml" + + in + let _endpos__6_ = _endpos__1_inlined3_ in + let _4 = + let _1 = _1_inlined2 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 30820 "parsing/parser.ml" + + in + let _endpos__4_ = _endpos__1_inlined2_ in + let _3 = + let _1 = _1_inlined1 in + +# 3608 "parsing/parser.mly" + ( _1 ) +# 30829 "parsing/parser.ml" + + in + let _1 = + let _1 = +# 3936 "parsing/parser.mly" + ( _1 ) +# 30836 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 30124 "parsing/parser.ml" - - in - let uid = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _endpos = _endpos__1_ in +# 30844 "parsing/parser.ml" + + in + let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 30135 "parsing/parser.ml" +# 3921 "parsing/parser.mly" + ( let info = + match rhs_info _endpos__4_ with + | Some _ as info_before_semi -> info_before_semi + | None -> symbol_info _endpos + in + let attrs = add_info_attrs info (_4 @ _6) in + Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) +# 30859 "parsing/parser.ml" in - let attrs1 = - let _1 = _1_inlined1 in + ( +# 3902 "parsing/parser.mly" + ( let (f, c) = tail in (head :: f, c) ) +# 30865 "parsing/parser.ml" + : (Parsetree.object_field list * Asttypes.closed_flag)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = tail; + MenhirLib.EngineTypes.startp = _startpos_tail_; + MenhirLib.EngineTypes.endp = _endpos_tail_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = ty; + MenhirLib.EngineTypes.startp = _startpos_ty_; + MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let tail : (Parsetree.object_field list * Asttypes.closed_flag) = Obj.magic tail in + let _2 : unit = Obj.magic _2 in + let ty : (Parsetree.core_type) = Obj.magic ty in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_ty_ in + let _endpos = _endpos_tail_ in + let _v = + let head = + let _endpos = _endpos_ty_ in + let _symbolstartpos = _startpos_ty_ in + let _sloc = (_symbolstartpos, _endpos) in -# 4114 "parsing/parser.mly" - ( _1 ) -# 30143 "parsing/parser.ml" +# 3932 "parsing/parser.mly" + ( Of.inherit_ ~loc:(make_loc _sloc) ty ) +# 30910 "parsing/parser.ml" in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 1869 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let docs = symbol_docs _sloc in - Ms.mk uid body ~attrs ~loc ~docs, ext - ) -# 30157 "parsing/parser.ml" - : (Parsetree.module_substitution * string Asttypes.loc option)) +# 3902 "parsing/parser.mly" + ( let (f, c) = tail in (head :: f, c) ) +# 30916 "parsing/parser.ml" + : (Parsetree.object_field list * Asttypes.closed_flag)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30167,9 +30926,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _5; @@ -30202,45 +30961,82 @@ module Tables = struct }; }; } = _menhir_stack in - let _6 : unit = Obj.magic _6 in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in let _5 : unit = Obj.magic _5 in - let _1_inlined2 : ( -# 848 "parsing/parser.mly" + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : ( +# 785 "parsing/parser.mly" (string) -# 30211 "parsing/parser.ml" - ) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _2 : (string Asttypes.loc option) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in +# 30973 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__6_ in + let _endpos = _endpos__1_inlined3_ in let _v = - let _4 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _endpos = _endpos__1_ in + let head = + let _6 = + let _1 = _1_inlined3 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 30985 "parsing/parser.ml" + + in + let _endpos__6_ = _endpos__1_inlined3_ in + let _4 = + let _1 = _1_inlined2 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 30994 "parsing/parser.ml" + + in + let _endpos__4_ = _endpos__1_inlined2_ in + let _3 = + let _1 = _1_inlined1 in + +# 3608 "parsing/parser.mly" + ( _1 ) +# 31003 "parsing/parser.ml" + + in + let _1 = + let _1 = +# 3936 "parsing/parser.mly" + ( _1 ) +# 31010 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 31018 "parsing/parser.ml" + + in + let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 30228 "parsing/parser.ml" - - in - let _3 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 30236 "parsing/parser.ml" +# 3921 "parsing/parser.mly" + ( let info = + match rhs_info _endpos__4_ with + | Some _ as info_before_semi -> info_before_semi + | None -> symbol_info _endpos + in + let attrs = add_info_attrs info (_4 @ _6) in + Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) +# 31033 "parsing/parser.ml" in - let _loc__6_ = (_startpos__6_, _endpos__6_) in ( -# 1876 "parsing/parser.mly" - ( expecting _loc__6_ "module path" ) -# 30243 "parsing/parser.ml" - : (Parsetree.module_substitution * string Asttypes.loc option)) +# 3905 "parsing/parser.mly" + ( [head], Closed ) +# 31039 "parsing/parser.ml" + : (Parsetree.object_field list * Asttypes.closed_flag)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30253,53 +31049,38 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = s; - MenhirLib.EngineTypes.startp = _startpos_s_; - MenhirLib.EngineTypes.endp = _endpos_s_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = ty; + MenhirLib.EngineTypes.startp = _startpos_ty_; + MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let s : (Parsetree.signature) = Obj.magic s in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let _2 : unit = Obj.magic _2 in + let ty : (Parsetree.core_type) = Obj.magic ty in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in + let _startpos = _startpos_ty_ in + let _endpos = _endpos__2_ in let _v = - let attrs = - let _1 = _1_inlined1 in + let head = + let _endpos = _endpos_ty_ in + let _symbolstartpos = _startpos_ty_ in + let _sloc = (_symbolstartpos, _endpos) in -# 4114 "parsing/parser.mly" - ( _1 ) -# 30293 "parsing/parser.ml" +# 3932 "parsing/parser.mly" + ( Of.inherit_ ~loc:(make_loc _sloc) ty ) +# 31077 "parsing/parser.ml" in - let _endpos = _endpos__4_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 1715 "parsing/parser.mly" - ( mkmty ~loc:_sloc ~attrs (Pmty_signature s) ) -# 30302 "parsing/parser.ml" - : (Parsetree.module_type)) +# 3905 "parsing/parser.mly" + ( [head], Closed ) +# 31083 "parsing/parser.ml" + : (Parsetree.object_field list * Asttypes.closed_flag)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30312,19 +31093,19 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -30335,29 +31116,67 @@ module Tables = struct }; }; } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.signature) = Obj.magic _3 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : ( +# 785 "parsing/parser.mly" + (string) +# 31126 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in + let _endpos = _endpos__1_inlined2_ in let _v = - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" + let head = + let _4 = + let _1 = _1_inlined2 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 31138 "parsing/parser.ml" + + in + let _endpos__4_ = _endpos__1_inlined2_ in + let _3 = + let _1 = _1_inlined1 in + +# 3608 "parsing/parser.mly" ( _1 ) -# 30352 "parsing/parser.ml" +# 31147 "parsing/parser.ml" + + in + let _1 = + let _1 = +# 3936 "parsing/parser.mly" + ( _1 ) +# 31154 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 31162 "parsing/parser.ml" + + in + let _endpos = _endpos__4_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3914 "parsing/parser.mly" + ( let info = symbol_info _endpos in + let attrs = add_info_attrs info _4 in + Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) +# 31173 "parsing/parser.ml" in - let _loc__4_ = (_startpos__4_, _endpos__4_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1717 "parsing/parser.mly" - ( unclosed "sig" _loc__1_ "end" _loc__4_ ) -# 30360 "parsing/parser.ml" - : (Parsetree.module_type)) +# 3908 "parsing/parser.mly" + ( [head], Closed ) +# 31179 "parsing/parser.ml" + : (Parsetree.object_field list * Asttypes.closed_flag)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30369,30 +31188,32 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = ty; + MenhirLib.EngineTypes.startp = _startpos_ty_; + MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let ty : (Parsetree.core_type) = Obj.magic ty in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in + let _startpos = _startpos_ty_ in + let _endpos = _endpos_ty_ in let _v = - let _loc__1_ = (_startpos__1_, _endpos__1_) in + let head = + let _endpos = _endpos_ty_ in + let _symbolstartpos = _startpos_ty_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3932 "parsing/parser.mly" + ( Of.inherit_ ~loc:(make_loc _sloc) ty ) +# 31210 "parsing/parser.ml" + + in ( -# 1719 "parsing/parser.mly" - ( expecting _loc__1_ "sig" ) -# 30395 "parsing/parser.ml" - : (Parsetree.module_type)) +# 3908 "parsing/parser.mly" + ( [head], Closed ) +# 31216 "parsing/parser.ml" + : (Parsetree.object_field list * Asttypes.closed_flag)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30401,28 +31222,53 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.object_field list * Asttypes.closed_flag) = +# 3910 "parsing/parser.mly" + ( [], Open ) +# 31242 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = mty; - MenhirLib.EngineTypes.startp = _startpos_mty_; - MenhirLib.EngineTypes.endp = _endpos_mty_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = private_; + MenhirLib.EngineTypes.startp = _startpos_private__; + MenhirLib.EngineTypes.endp = _endpos_private__; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -30434,39 +31280,60 @@ module Tables = struct }; }; } = _menhir_stack in - let mty : (Parsetree.module_type) = Obj.magic mty in - let _4 : unit = Obj.magic _4 in - let _1_inlined2 : ((Lexing.position * Parsetree.functor_parameter) list) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in + let _5 : unit = Obj.magic _5 in + let _1_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 31289 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let private_ : (Asttypes.private_flag) = Obj.magic private_ in + let _1 : (Parsetree.attributes) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_mty_ in + let _endpos = _endpos__1_inlined2_ in let _v = - let args = + let ty = let _1 = _1_inlined2 in -# 1385 "parsing/parser.mly" +# 3604 "parsing/parser.mly" ( _1 ) -# 30452 "parsing/parser.ml" +# 31302 "parsing/parser.ml" in - let attrs = - let _1 = _1_inlined1 in + let label = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _1 = +# 3936 "parsing/parser.mly" + ( _1 ) +# 31310 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 4114 "parsing/parser.mly" - ( _1 ) -# 30460 "parsing/parser.ml" +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 31318 "parsing/parser.ml" in - let _endpos = _endpos_mty_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let attrs = +# 4286 "parsing/parser.mly" + ( _1 ) +# 31324 "parsing/parser.ml" + in + let _1 = +# 4184 "parsing/parser.mly" + ( Fresh ) +# 31329 "parsing/parser.ml" + in ( -# 1723 "parsing/parser.mly" - ( wrap_mty_attrs ~loc:_sloc attrs (mk_functor_typ args mty) ) -# 30469 "parsing/parser.ml" - : (Parsetree.module_type)) +# 2092 "parsing/parser.mly" + ( (label, private_, Cfk_virtual ty), attrs ) +# 31334 "parsing/parser.ml" + : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * + Parsetree.class_field_kind) * + Parsetree.attributes)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30479,40 +31346,77 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = mty; - MenhirLib.EngineTypes.startp = _startpos_mty_; - MenhirLib.EngineTypes.endp = _endpos_mty_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; } = _menhir_stack in - let mty : (Parsetree.module_type) = Obj.magic mty in - let _2 : unit = Obj.magic _2 in - let _1 : ((Lexing.position * Parsetree.functor_parameter) list) = Obj.magic _1 in + let _5 : (Parsetree.expression) = Obj.magic _5 in + let _1_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 31377 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _3 : (Asttypes.private_flag) = Obj.magic _3 in + let _1 : (Parsetree.attributes) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_mty_ in + let _endpos = _endpos__5_ in let _v = - let args = -# 1385 "parsing/parser.mly" + let _4 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _1 = +# 3936 "parsing/parser.mly" + ( _1 ) +# 31390 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 31398 "parsing/parser.ml" + + in + let _2 = +# 4286 "parsing/parser.mly" ( _1 ) -# 30510 "parsing/parser.ml" +# 31404 "parsing/parser.ml" + in + let _1 = +# 4187 "parsing/parser.mly" + ( Fresh ) +# 31409 "parsing/parser.ml" in ( -# 1727 "parsing/parser.mly" - ( mk_functor_typ args mty ) -# 30515 "parsing/parser.ml" - : (Parsetree.module_type)) +# 2094 "parsing/parser.mly" + ( let e = _5 in + let loc = Location.(e.pexp_loc.loc_start, e.pexp_loc.loc_end) in + (_4, _3, + Cfk_concrete (_1, ghexp ~loc (Pexp_poly (e, None)))), _2 ) +# 31417 "parsing/parser.ml" + : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * + Parsetree.class_field_kind) * + Parsetree.attributes)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30530,9 +31434,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -30540,9 +31444,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -30554,31 +31458,58 @@ module Tables = struct }; }; } = _menhir_stack in - let _5 : (Parsetree.module_expr) = Obj.magic _5 in + let _5 : (Parsetree.expression) = Obj.magic _5 in + let _1_inlined2 : ( +# 785 "parsing/parser.mly" + (string) +# 31466 "parsing/parser.ml" + ) = Obj.magic _1_inlined2 in + let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _3 : unit = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v = let _4 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _1 = +# 3936 "parsing/parser.mly" + ( _1 ) +# 31480 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 31488 "parsing/parser.ml" + + in + let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 30572 "parsing/parser.ml" +# 31496 "parsing/parser.ml" in - let _endpos = _endpos__5_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _1 = +# 4188 "parsing/parser.mly" + ( Override ) +# 31502 "parsing/parser.ml" + in ( -# 1729 "parsing/parser.mly" - ( mkmty ~loc:_sloc ~attrs:_4 (Pmty_typeof _5) ) -# 30581 "parsing/parser.ml" - : (Parsetree.module_type)) +# 2094 "parsing/parser.mly" + ( let e = _5 in + let loc = Location.(e.pexp_loc.loc_start, e.pexp_loc.loc_end) in + (_4, _3, + Cfk_concrete (_1, ghexp ~loc (Pexp_poly (e, None)))), _2 ) +# 31510 "parsing/parser.ml" + : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * + Parsetree.class_field_kind) * + Parsetree.attributes)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30591,34 +31522,108 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _8; + MenhirLib.EngineTypes.startp = _startpos__8_; + MenhirLib.EngineTypes.endp = _endpos__8_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; }; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.module_type) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _8 : (Parsetree.expression) = Obj.magic _8 in + let _7 : unit = Obj.magic _7 in + let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in + let _5 : unit = Obj.magic _5 in + let _1_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 31574 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _3 : (Asttypes.private_flag) = Obj.magic _3 in + let _1 : (Parsetree.attributes) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Parsetree.module_type) = -# 1731 "parsing/parser.mly" - ( _2 ) -# 30621 "parsing/parser.ml" - in + let _endpos = _endpos__8_ in + let _v = + let _6 = + let _1 = _1_inlined2 in + +# 3604 "parsing/parser.mly" + ( _1 ) +# 31587 "parsing/parser.ml" + + in + let _startpos__6_ = _startpos__1_inlined2_ in + let _4 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _1 = +# 3936 "parsing/parser.mly" + ( _1 ) +# 31596 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 31604 "parsing/parser.ml" + + in + let _2 = +# 4286 "parsing/parser.mly" + ( _1 ) +# 31610 "parsing/parser.ml" + in + let _1 = +# 4187 "parsing/parser.mly" + ( Fresh ) +# 31615 "parsing/parser.ml" + in + ( +# 2100 "parsing/parser.mly" + ( let poly_exp = + let loc = (_startpos__6_, _endpos__8_) in + ghexp ~loc (Pexp_poly(_8, Some _6)) in + (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) +# 31623 "parsing/parser.ml" + : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * + Parsetree.class_field_kind) * + Parsetree.attributes)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -30630,123 +31635,117 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _8; + MenhirLib.EngineTypes.startp = _startpos__8_; + MenhirLib.EngineTypes.endp = _endpos__8_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; }; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.module_type) = Obj.magic _2 in + let _8 : (Parsetree.expression) = Obj.magic _8 in + let _7 : unit = Obj.magic _7 in + let _1_inlined3 : (Parsetree.core_type) = Obj.magic _1_inlined3 in + let _5 : unit = Obj.magic _5 in + let _1_inlined2 : ( +# 785 "parsing/parser.mly" + (string) +# 31693 "parsing/parser.ml" + ) = Obj.magic _1_inlined2 in + let _3 : (Asttypes.private_flag) = Obj.magic _3 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v = - let _loc__3_ = (_startpos__3_, _endpos__3_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in - ( -# 1733 "parsing/parser.mly" - ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 30663 "parsing/parser.ml" - : (Parsetree.module_type)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let _2 : (Parsetree.attribute) = Obj.magic _2 in - let _1 : (Parsetree.module_type) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.module_type) = -# 1735 "parsing/parser.mly" - ( Mty.attr _1 _2 ) -# 30696 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Longident.t) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _endpos = _endpos__8_ in let _v = - let _1 = - let _1 = - let _1 = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 30728 "parsing/parser.ml" - - in - -# 1738 "parsing/parser.mly" - ( Pmty_ident _1 ) -# 30734 "parsing/parser.ml" - - in + let _6 = + let _1 = _1_inlined3 in + +# 3604 "parsing/parser.mly" + ( _1 ) +# 31707 "parsing/parser.ml" + + in + let _startpos__6_ = _startpos__1_inlined3_ in + let _4 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _1 = +# 3936 "parsing/parser.mly" + ( _1 ) +# 31716 "parsing/parser.ml" + in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1029 "parsing/parser.mly" - ( mkmty ~loc:_sloc _1 ) -# 30743 "parsing/parser.ml" +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 31724 "parsing/parser.ml" in - ( -# 1749 "parsing/parser.mly" + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" ( _1 ) -# 30749 "parsing/parser.ml" - : (Parsetree.module_type)) +# 31732 "parsing/parser.ml" + + in + let _1 = +# 4188 "parsing/parser.mly" + ( Override ) +# 31738 "parsing/parser.ml" + in + ( +# 2100 "parsing/parser.mly" + ( let poly_exp = + let loc = (_startpos__6_, _endpos__8_) in + ghexp ~loc (Pexp_poly(_8, Some _6)) in + (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) +# 31746 "parsing/parser.ml" + : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * + Parsetree.class_field_kind) * + Parsetree.attributes)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30759,210 +31758,58 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let _3 : (Parsetree.module_type) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.module_type) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v = - let _1 = - let _1 = -# 1741 "parsing/parser.mly" - ( Pmty_functor(Named (mknoloc None, _1), _3) ) -# 30791 "parsing/parser.ml" - in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1029 "parsing/parser.mly" - ( mkmty ~loc:_sloc _1 ) -# 30800 "parsing/parser.ml" - - in - ( -# 1749 "parsing/parser.mly" - ( _1 ) -# 30806 "parsing/parser.ml" - : (Parsetree.module_type)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let xs : (Parsetree.with_constraint list) = Obj.magic xs in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.module_type) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in - let _v = - let _1 = - let _1 = - let _3 = - let xs = -# 264 "" - ( List.rev xs ) -# 30850 "parsing/parser.ml" - in - -# 1139 "parsing/parser.mly" - ( xs ) -# 30855 "parsing/parser.ml" - - in - -# 1743 "parsing/parser.mly" - ( Pmty_with(_1, _3) ) -# 30861 "parsing/parser.ml" - - in - let _endpos__1_ = _endpos_xs_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1029 "parsing/parser.mly" - ( mkmty ~loc:_sloc _1 ) -# 30871 "parsing/parser.ml" - - in - ( -# 1749 "parsing/parser.mly" - ( _1 ) -# 30877 "parsing/parser.ml" - : (Parsetree.module_type)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Parsetree.extension) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _1 = - let _1 = -# 1747 "parsing/parser.mly" - ( Pmty_extension _1 ) -# 30905 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1029 "parsing/parser.mly" - ( mkmty ~loc:_sloc _1 ) -# 30913 "parsing/parser.ml" - - in - ( -# 1749 "parsing/parser.mly" - ( _1 ) -# 30919 "parsing/parser.ml" - : (Parsetree.module_type)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _11; + MenhirLib.EngineTypes.startp = _startpos__11_; + MenhirLib.EngineTypes.endp = _endpos__11_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = typ; - MenhirLib.EngineTypes.startp = _startpos_typ_; - MenhirLib.EngineTypes.endp = _endpos_typ_; + MenhirLib.EngineTypes.semv = _10; + MenhirLib.EngineTypes.startp = _startpos__10_; + MenhirLib.EngineTypes.endp = _endpos__10_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _9; + MenhirLib.EngineTypes.startp = _startpos__9_; + MenhirLib.EngineTypes.endp = _endpos__9_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _8; + MenhirLib.EngineTypes.startp = _startpos__8_; + MenhirLib.EngineTypes.endp = _endpos__8_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; }; }; @@ -30970,58 +31817,87 @@ module Tables = struct }; }; } = _menhir_stack in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let typ : (Parsetree.module_type option) = Obj.magic typ in - let _1_inlined2 : (Asttypes.label) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let ext : (string Asttypes.loc option) = Obj.magic ext in - let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _11 : (Parsetree.expression) = Obj.magic _11 in + let _10 : unit = Obj.magic _10 in + let _9 : (Parsetree.core_type) = Obj.magic _9 in + let _8 : unit = Obj.magic _8 in + let xs : (string Asttypes.loc list) = Obj.magic xs in + let _6 : unit = Obj.magic _6 in + let _5 : unit = Obj.magic _5 in + let _1_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 31831 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _3 : (Asttypes.private_flag) = Obj.magic _3 in + let _1 : (Parsetree.attributes) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined3_ in + let _endpos = _endpos__11_ in let _v = - let attrs2 = - let _1 = _1_inlined3 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 30990 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined3_ in - let id = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _7 = +# 2664 "parsing/parser.mly" + ( xs ) +# 31842 "parsing/parser.ml" + in + let _startpos__7_ = _startpos_xs_ in + let _4 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _1 = +# 3936 "parsing/parser.mly" + ( _1 ) +# 31850 "parsing/parser.ml" + in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 31002 "parsing/parser.ml" +# 31858 "parsing/parser.ml" in - let attrs1 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" + let _startpos__4_ = _startpos__1_inlined1_ in + let _2 = +# 4286 "parsing/parser.mly" ( _1 ) -# 31010 "parsing/parser.ml" - - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in +# 31865 "parsing/parser.ml" + in + let (_endpos__2_, _startpos__2_) = (_endpos__1_, _startpos__1_) in + let _1 = +# 4187 "parsing/parser.mly" + ( Fresh ) +# 31871 "parsing/parser.ml" + in + let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in + let _endpos = _endpos__11_ in + let _symbolstartpos = if _startpos__1_ != _endpos__1_ then + _startpos__1_ + else + if _startpos__2_ != _endpos__2_ then + _startpos__2_ + else + if _startpos__3_ != _endpos__3_ then + _startpos__3_ + else + _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1661 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let docs = symbol_docs _sloc in - Mtd.mk id ?typ ~attrs ~loc ~docs, ext - ) -# 31024 "parsing/parser.ml" - : (Parsetree.module_type_declaration * string Asttypes.loc option)) +# 2106 "parsing/parser.mly" + ( let poly_exp_loc = (_startpos__7_, _endpos__11_) in + let poly_exp = + let exp, poly = + (* it seems odd to use the global ~loc here while poly_exp_loc + is tighter, but this is what ocamlyacc does; + TODO improve parser.mly *) + wrap_type_annotation ~loc:_sloc _7 _9 _11 in + ghexp ~loc:poly_exp_loc (Pexp_poly(exp, Some poly)) in + (_4, _3, + Cfk_concrete (_1, poly_exp)), _2 ) +# 31898 "parsing/parser.ml" + : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * + Parsetree.class_field_kind) * + Parsetree.attributes)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31034,45 +31910,63 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _11; + MenhirLib.EngineTypes.startp = _startpos__11_; + MenhirLib.EngineTypes.endp = _endpos__11_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = typ; - MenhirLib.EngineTypes.startp = _startpos_typ_; - MenhirLib.EngineTypes.endp = _endpos_typ_; + MenhirLib.EngineTypes.semv = _10; + MenhirLib.EngineTypes.startp = _startpos__10_; + MenhirLib.EngineTypes.endp = _endpos__10_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.semv = _9; + MenhirLib.EngineTypes.startp = _startpos__9_; + MenhirLib.EngineTypes.endp = _endpos__9_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _8; + MenhirLib.EngineTypes.startp = _startpos__8_; + MenhirLib.EngineTypes.endp = _endpos__8_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; }; }; @@ -31081,59 +31975,90 @@ module Tables = struct }; }; } = _menhir_stack in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let typ : (Parsetree.module_type) = Obj.magic typ in + let _11 : (Parsetree.expression) = Obj.magic _11 in + let _10 : unit = Obj.magic _10 in + let _9 : (Parsetree.core_type) = Obj.magic _9 in + let _8 : unit = Obj.magic _8 in + let xs : (string Asttypes.loc list) = Obj.magic xs in let _6 : unit = Obj.magic _6 in - let _1_inlined2 : (Asttypes.label) = Obj.magic _1_inlined2 in + let _5 : unit = Obj.magic _5 in + let _1_inlined2 : ( +# 785 "parsing/parser.mly" + (string) +# 31989 "parsing/parser.ml" + ) = Obj.magic _1_inlined2 in + let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let ext : (string Asttypes.loc option) = Obj.magic ext in - let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined3_ in + let _endpos = _endpos__11_ in let _v = - let attrs2 = - let _1 = _1_inlined3 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 31102 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined3_ in - let id = + let _7 = +# 2664 "parsing/parser.mly" + ( xs ) +# 32001 "parsing/parser.ml" + in + let _startpos__7_ = _startpos_xs_ in + let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _1 = +# 3936 "parsing/parser.mly" + ( _1 ) +# 32009 "parsing/parser.ml" + in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 31114 "parsing/parser.ml" +# 32017 "parsing/parser.ml" in - let attrs1 = + let _startpos__4_ = _startpos__1_inlined2_ in + let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 31122 "parsing/parser.ml" +# 32026 "parsing/parser.ml" in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in + let (_endpos__2_, _startpos__2_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in + let _1 = +# 4188 "parsing/parser.mly" + ( Override ) +# 32033 "parsing/parser.ml" + in + let _endpos = _endpos__11_ in + let _symbolstartpos = if _startpos__1_ != _endpos__1_ then + _startpos__1_ + else + if _startpos__2_ != _endpos__2_ then + _startpos__2_ + else + if _startpos__3_ != _endpos__3_ then + _startpos__3_ + else + _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1925 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let docs = symbol_docs _sloc in - Mtd.mk id ~typ ~attrs ~loc ~docs, ext - ) -# 31136 "parsing/parser.ml" - : (Parsetree.module_type_declaration * string Asttypes.loc option)) +# 2106 "parsing/parser.mly" + ( let poly_exp_loc = (_startpos__7_, _endpos__11_) in + let poly_exp = + let exp, poly = + (* it seems odd to use the global ~loc here while poly_exp_loc + is tighter, but this is what ocamlyacc does; + TODO improve parser.mly *) + wrap_type_annotation ~loc:_sloc _7 _9 _11 in + ghexp ~loc:poly_exp_loc (Pexp_poly(exp, Some poly)) in + (_4, _3, + Cfk_concrete (_1, poly_exp)), _2 ) +# 32059 "parsing/parser.ml" + : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * + Parsetree.class_field_kind) * + Parsetree.attributes)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31151,14 +32076,18 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : (Longident.t) = Obj.magic _1 in + let _1 : ( +# 785 "parsing/parser.mly" + (string) +# 32083 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3892 "parsing/parser.mly" - ( _1 ) -# 31162 "parsing/parser.ml" +# 4040 "parsing/parser.mly" + ( Lident _1 ) +# 32091 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31169,15 +32098,44 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : ( +# 785 "parsing/parser.mly" + (string) +# 32124 "parsing/parser.ml" + ) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Asttypes.mutable_flag) = -# 3973 "parsing/parser.mly" - ( Immutable ) -# 31180 "parsing/parser.ml" - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 4041 "parsing/parser.mly" + ( ldot _1 _loc__1_ _3 _loc__3_ ) +# 32137 "parsing/parser.ml" + : (Longident.t)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -31194,32 +32152,18 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _1 : ( +# 836 "parsing/parser.mly" + (string) +# 32159 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v : (Asttypes.mutable_flag) = -# 3974 "parsing/parser.mly" - ( Mutable ) -# 31205 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 3982 "parsing/parser.mly" - ( Immutable, Concrete ) -# 31223 "parsing/parser.ml" + let _v : (Longident.t) = +# 4040 "parsing/parser.mly" + ( Lident _1 ) +# 32167 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31231,21 +32175,43 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _3 : ( +# 836 "parsing/parser.mly" + (string) +# 32200 "parsing/parser.ml" + ) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 3984 "parsing/parser.mly" - ( Mutable, Concrete ) -# 31248 "parsing/parser.ml" - in + let _endpos = _endpos__3_ in + let _v = + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 4041 "parsing/parser.mly" + ( ldot _1 _loc__1_ _3 _loc__3_ ) +# 32213 "parsing/parser.ml" + : (Longident.t)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -31262,15 +32228,22 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 3986 "parsing/parser.mly" - ( Immutable, Virtual ) -# 31273 "parsing/parser.ml" - in + let _v = + let _1 = +# 4078 "parsing/parser.mly" + ( _1 ) +# 32240 "parsing/parser.ml" + in + ( +# 4040 "parsing/parser.mly" + ( Lident _1 ) +# 32245 "parsing/parser.ml" + : (Longident.t)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -31282,27 +32255,48 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in + let _3 : unit = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 3989 "parsing/parser.mly" - ( Mutable, Virtual ) -# 31305 "parsing/parser.ml" - in + let _endpos = _endpos__3_ in + let _v = + let _1 = + let _1 = +# 4020 "parsing/parser.mly" + ( "::" ) +# 32287 "parsing/parser.ml" + in + +# 4078 "parsing/parser.mly" + ( _1 ) +# 32292 "parsing/parser.ml" + + in + ( +# 4040 "parsing/parser.mly" + ( Lident _1 ) +# 32298 "parsing/parser.ml" + : (Longident.t)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -31313,28 +32307,28 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 3989 "parsing/parser.mly" - ( Mutable, Virtual ) -# 31337 "parsing/parser.ml" - in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4078 "parsing/parser.mly" + ( _1 ) +# 32325 "parsing/parser.ml" + in + ( +# 4040 "parsing/parser.mly" + ( Lident _1 ) +# 32330 "parsing/parser.ml" + : (Longident.t)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -31346,27 +32340,47 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in - let _2 : (Asttypes.label) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Asttypes.label) = -# 3944 "parsing/parser.mly" - ( _2 ) -# 31369 "parsing/parser.ml" - in + let _endpos = _endpos__1_inlined1_ in + let _v = + let _3 = + let _1 = _1_inlined1 in + +# 4078 "parsing/parser.mly" + ( _1 ) +# 32373 "parsing/parser.ml" + + in + let (_endpos__3_, _startpos__3_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 4041 "parsing/parser.mly" + ( ldot _1 _loc__1_ _3 _loc__3_ ) +# 32382 "parsing/parser.ml" + : (Longident.t)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -31377,36 +32391,65 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; } = _menhir_stack in - let _1 : ( -# 797 "parsing/parser.mly" - (string) -# 31390 "parsing/parser.ml" - ) = Obj.magic _1 in + let _3 : unit = Obj.magic _3 in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _endpos = _endpos__3_ in let _v = - let x = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let _1 = +# 4020 "parsing/parser.mly" + ( "::" ) +# 32438 "parsing/parser.ml" + in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 31403 "parsing/parser.ml" +# 4078 "parsing/parser.mly" + ( _1 ) +# 32443 "parsing/parser.ml" in + let _startpos__3_ = _startpos__1_inlined1_ in + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 228 "" - ( [ x ] ) -# 31409 "parsing/parser.ml" - : (string Asttypes.loc list)) +# 4041 "parsing/parser.mly" + ( ldot _1 _loc__1_ _3 _loc__3_ ) +# 32452 "parsing/parser.ml" + : (Longident.t)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31419,42 +32462,46 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in - let xs : (string Asttypes.loc list) = Obj.magic xs in - let _1 : ( -# 797 "parsing/parser.mly" - (string) -# 31438 "parsing/parser.ml" - ) = Obj.magic _1 in + let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _endpos = _endpos__1_inlined1_ in let _v = - let x = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let _1 = _1_inlined1 in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 31451 "parsing/parser.ml" +# 4078 "parsing/parser.mly" + ( _1 ) +# 32495 "parsing/parser.ml" in + let (_endpos__3_, _startpos__3_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 231 "" - ( x :: xs ) -# 31457 "parsing/parser.ml" - : (string Asttypes.loc list)) +# 4041 "parsing/parser.mly" + ( ldot _1 _loc__1_ _3 _loc__3_ ) +# 32504 "parsing/parser.ml" + : (Longident.t)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31467,31 +32514,20 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = s; - MenhirLib.EngineTypes.startp = _startpos_s_; - MenhirLib.EngineTypes.endp = _endpos_s_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let s : ( -# 835 "parsing/parser.mly" - (string * Location.t * string option) -# 31479 "parsing/parser.ml" - ) = Obj.magic s in + let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_s_ in - let _endpos = _endpos_s_ in - let _v = - let x = -# 3940 "parsing/parser.mly" - ( let body, _, _ = s in body ) -# 31488 "parsing/parser.ml" - in - ( -# 228 "" - ( [ x ] ) -# 31493 "parsing/parser.ml" - : (string list)) - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Longident.t) = +# 4040 "parsing/parser.mly" + ( Lident _1 ) +# 32530 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -31503,37 +32539,37 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = s; - MenhirLib.EngineTypes.startp = _startpos_s_; - MenhirLib.EngineTypes.endp = _endpos_s_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in - let xs : (string list) = Obj.magic xs in - let s : ( -# 835 "parsing/parser.mly" - (string * Location.t * string option) -# 31522 "parsing/parser.ml" - ) = Obj.magic s in + let _3 : (Asttypes.label) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_s_ in - let _endpos = _endpos_xs_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in let _v = - let x = -# 3940 "parsing/parser.mly" - ( let body, _, _ = s in body ) -# 31531 "parsing/parser.ml" - in + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 231 "" - ( x :: xs ) -# 31536 "parsing/parser.ml" - : (string list)) +# 4041 "parsing/parser.mly" + ( ldot _1 _loc__1_ _3 _loc__3_ ) +# 32572 "parsing/parser.ml" + : (Longident.t)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31546,27 +32582,24 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let ty : (Parsetree.core_type) = Obj.magic ty in + let _1 : ( +# 785 "parsing/parser.mly" + (string) +# 32594 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_ty_ in - let _endpos = _endpos_ty_ in - let _v = - let priv = -# 3969 "parsing/parser.mly" - ( Public ) -# 31563 "parsing/parser.ml" - in - ( -# 3192 "parsing/parser.mly" - ( (Ptype_abstract, priv, Some ty) ) -# 31568 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Longident.t) = +# 4040 "parsing/parser.mly" + ( Lident _1 ) +# 32602 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -31578,33 +32611,41 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in - let ty : (Parsetree.core_type) = Obj.magic ty in - let _1 : unit = Obj.magic _1 in + let _3 : ( +# 785 "parsing/parser.mly" + (string) +# 32635 "parsing/parser.ml" + ) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_ty_ in + let _endpos = _endpos__3_ in let _v = - let priv = -# 3970 "parsing/parser.mly" - ( Private ) -# 31602 "parsing/parser.ml" - in + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3192 "parsing/parser.mly" - ( (Ptype_abstract, priv, Some ty) ) -# 31607 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) +# 4041 "parsing/parser.mly" + ( ldot _1 _loc__1_ _3 _loc__3_ ) +# 32648 "parsing/parser.ml" + : (Longident.t)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31617,39 +32658,24 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = cs; - MenhirLib.EngineTypes.startp = _startpos_cs_; - MenhirLib.EngineTypes.endp = _endpos_cs_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let cs : (Parsetree.constructor_declaration list) = Obj.magic cs in + let _1 : ( +# 836 "parsing/parser.mly" + (string) +# 32670 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_cs_ in - let _endpos = _endpos_cs_ in - let _v = - let priv = -# 3969 "parsing/parser.mly" - ( Public ) -# 31634 "parsing/parser.ml" - in - let oty = - let _1 = -# 123 "" - ( None ) -# 31640 "parsing/parser.ml" - in - -# 3208 "parsing/parser.mly" - ( _1 ) -# 31645 "parsing/parser.ml" - - in - ( -# 3196 "parsing/parser.mly" - ( (Ptype_variant cs, priv, oty) ) -# 31651 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Longident.t) = +# 4040 "parsing/parser.mly" + ( Lident _1 ) +# 32678 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -31661,45 +32687,41 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = cs; - MenhirLib.EngineTypes.startp = _startpos_cs_; - MenhirLib.EngineTypes.endp = _endpos_cs_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in - let cs : (Parsetree.constructor_declaration list) = Obj.magic cs in - let _1 : unit = Obj.magic _1 in + let _3 : ( +# 836 "parsing/parser.mly" + (string) +# 32711 "parsing/parser.ml" + ) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_cs_ in + let _endpos = _endpos__3_ in let _v = - let priv = -# 3970 "parsing/parser.mly" - ( Private ) -# 31685 "parsing/parser.ml" - in - let oty = - let _1 = -# 123 "" - ( None ) -# 31691 "parsing/parser.ml" - in - -# 3208 "parsing/parser.mly" - ( _1 ) -# 31696 "parsing/parser.ml" - - in + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3196 "parsing/parser.mly" - ( (Ptype_variant cs, priv, oty) ) -# 31702 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) +# 4041 "parsing/parser.mly" + ( ldot _1 _loc__1_ _3 _loc__3_ ) +# 32724 "parsing/parser.ml" + : (Longident.t)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31708,13 +32730,38 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Asttypes.label) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Longident.t) = +# 4040 "parsing/parser.mly" + ( Lident _1 ) +# 32750 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = cs; - MenhirLib.EngineTypes.startp = _startpos_cs_; - MenhirLib.EngineTypes.endp = _endpos_cs_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -31722,49 +32769,27 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let cs : (Parsetree.constructor_declaration list) = Obj.magic cs in + let _3 : (Asttypes.label) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let x : (Parsetree.core_type) = Obj.magic x in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos_cs_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in let _v = - let priv = -# 3969 "parsing/parser.mly" - ( Public ) -# 31743 "parsing/parser.ml" - in - let oty = - let _1 = - let x = -# 196 "" - ( x ) -# 31750 "parsing/parser.ml" - in - -# 126 "" - ( Some x ) -# 31755 "parsing/parser.ml" - - in - -# 3208 "parsing/parser.mly" - ( _1 ) -# 31761 "parsing/parser.ml" - - in + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3196 "parsing/parser.mly" - ( (Ptype_variant cs, priv, oty) ) -# 31767 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) +# 4041 "parsing/parser.mly" + ( ldot _1 _loc__1_ _3 _loc__3_ ) +# 32792 "parsing/parser.ml" + : (Longident.t)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31773,18 +32798,43 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Longident.t) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Longident.t) = +# 4056 "parsing/parser.mly" + ( _1 ) +# 32818 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = cs; - MenhirLib.EngineTypes.startp = _startpos_cs_; - MenhirLib.EngineTypes.endp = _endpos_cs_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -31792,51 +32842,32 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let cs : (Parsetree.constructor_declaration list) = Obj.magic cs in - let _1 : unit = Obj.magic _1 in + let _4 : unit = Obj.magic _4 in + let _3 : (Longident.t) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let x : (Parsetree.core_type) = Obj.magic x in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos_cs_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in let _v = - let priv = -# 3970 "parsing/parser.mly" - ( Private ) -# 31815 "parsing/parser.ml" - in - let oty = - let _1 = - let x = -# 196 "" - ( x ) -# 31822 "parsing/parser.ml" - in - -# 126 "" - ( Some x ) -# 31827 "parsing/parser.ml" - - in - -# 3208 "parsing/parser.mly" - ( _1 ) -# 31833 "parsing/parser.ml" - - in + let _endpos = _endpos__4_ in + let _symbolstartpos = _startpos__1_ in + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + let _sloc = (_symbolstartpos, _endpos) in ( -# 3196 "parsing/parser.mly" - ( (Ptype_variant cs, priv, oty) ) -# 31839 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) +# 4058 "parsing/parser.mly" + ( lapply ~loc:_sloc _1 _loc__1_ _3 _loc__3_ ) +# 32870 "parsing/parser.ml" + : (Longident.t)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31848,39 +32879,37 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; MenhirLib.EngineTypes.startp = _startpos__3_; MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; } = _menhir_stack in let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__3_ in + let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v = - let priv = -# 3969 "parsing/parser.mly" - ( Public ) -# 31866 "parsing/parser.ml" - in - let oty = - let _1 = -# 123 "" - ( None ) -# 31872 "parsing/parser.ml" - in - -# 3208 "parsing/parser.mly" - ( _1 ) -# 31877 "parsing/parser.ml" - - in + let _loc__3_ = (_startpos__3_, _endpos__3_) in ( -# 3200 "parsing/parser.mly" - ( (Ptype_open, priv, oty) ) -# 31883 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) +# 4060 "parsing/parser.mly" + ( expecting _loc__3_ "module path" ) +# 32912 "parsing/parser.ml" + : (Longident.t)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31889,13 +32918,38 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Longident.t) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Longident.t) = +# 4053 "parsing/parser.mly" + ( _1 ) +# 32938 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = me; + MenhirLib.EngineTypes.startp = _startpos_me_; + MenhirLib.EngineTypes.endp = _endpos_me_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -31904,35 +32958,16 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in + let me : (Parsetree.module_expr) = Obj.magic me in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v = - let priv = -# 3970 "parsing/parser.mly" - ( Private ) -# 31917 "parsing/parser.ml" - in - let oty = - let _1 = -# 123 "" - ( None ) -# 31923 "parsing/parser.ml" - in - -# 3208 "parsing/parser.mly" - ( _1 ) -# 31928 "parsing/parser.ml" - - in - ( -# 3200 "parsing/parser.mly" - ( (Ptype_open, priv, oty) ) -# 31934 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) - in + let _endpos = _endpos_me_ in + let _v : (Parsetree.module_expr) = +# 1569 "parsing/parser.mly" + ( me ) +# 32970 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -31944,59 +32979,29 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let x : (Parsetree.core_type) = Obj.magic x in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos__3_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in let _v = - let priv = -# 3969 "parsing/parser.mly" - ( Public ) -# 31975 "parsing/parser.ml" - in - let oty = - let _1 = - let x = -# 196 "" - ( x ) -# 31982 "parsing/parser.ml" - in - -# 126 "" - ( Some x ) -# 31987 "parsing/parser.ml" - - in - -# 3208 "parsing/parser.mly" - ( _1 ) -# 31993 "parsing/parser.ml" - - in + let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3200 "parsing/parser.mly" - ( (Ptype_open, priv, oty) ) -# 31999 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) +# 1571 "parsing/parser.mly" + ( expecting _loc__1_ "=" ) +# 33004 "parsing/parser.ml" + : (Parsetree.module_expr)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32009,66 +33014,58 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = me; + MenhirLib.EngineTypes.startp = _startpos_me_; + MenhirLib.EngineTypes.endp = _endpos_me_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = mty; + MenhirLib.EngineTypes.startp = _startpos_mty_; + MenhirLib.EngineTypes.endp = _endpos_mty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in + let me : (Parsetree.module_expr) = Obj.magic me in let _3 : unit = Obj.magic _3 in + let mty : (Parsetree.module_type) = Obj.magic mty in let _1 : unit = Obj.magic _1 in - let _2 : unit = Obj.magic _2 in - let x : (Parsetree.core_type) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos__3_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos_me_ in let _v = - let priv = -# 3970 "parsing/parser.mly" - ( Private ) -# 32047 "parsing/parser.ml" - in - let oty = - let _1 = - let x = -# 196 "" - ( x ) -# 32054 "parsing/parser.ml" - in - -# 126 "" - ( Some x ) -# 32059 "parsing/parser.ml" - - in + let _1 = + let _1 = +# 1574 "parsing/parser.mly" + ( Pmod_constraint(me, mty) ) +# 33053 "parsing/parser.ml" + in + let _endpos__1_ = _endpos_me_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 3208 "parsing/parser.mly" - ( _1 ) -# 32065 "parsing/parser.ml" +# 1015 "parsing/parser.mly" + ( mkmod ~loc:_sloc _1 ) +# 33062 "parsing/parser.ml" in ( -# 3200 "parsing/parser.mly" - ( (Ptype_open, priv, oty) ) -# 32071 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) +# 1578 "parsing/parser.mly" + ( _1 ) +# 33068 "parsing/parser.ml" + : (Parsetree.module_expr)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32081,52 +33078,45 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = body; + MenhirLib.EngineTypes.startp = _startpos_body_; + MenhirLib.EngineTypes.endp = _endpos_body_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ls; - MenhirLib.EngineTypes.startp = _startpos_ls_; - MenhirLib.EngineTypes.endp = _endpos_ls_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = arg_and_pos; + MenhirLib.EngineTypes.startp = _startpos_arg_and_pos_; + MenhirLib.EngineTypes.endp = _endpos_arg_and_pos_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let ls : (Parsetree.label_declaration list) = Obj.magic ls in - let _3 : unit = Obj.magic _3 in + let body : (Parsetree.module_expr) = Obj.magic body in + let arg_and_pos : (Lexing.position * Parsetree.functor_parameter) = Obj.magic arg_and_pos in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__3_ in - let _endpos = _endpos__5_ in + let _startpos = _startpos_arg_and_pos_ in + let _endpos = _endpos_body_ in let _v = - let priv = -# 3969 "parsing/parser.mly" - ( Public ) -# 32112 "parsing/parser.ml" - in - let oty = + let _1 = let _1 = -# 123 "" - ( None ) -# 32118 "parsing/parser.ml" +# 1576 "parsing/parser.mly" + ( let (_, arg) = arg_and_pos in + Pmod_functor(arg, body) ) +# 33104 "parsing/parser.ml" in + let (_endpos__1_, _startpos__1_) = (_endpos_body_, _startpos_arg_and_pos_) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 3208 "parsing/parser.mly" - ( _1 ) -# 32123 "parsing/parser.ml" +# 1015 "parsing/parser.mly" + ( mkmod ~loc:_sloc _1 ) +# 33113 "parsing/parser.ml" in ( -# 3204 "parsing/parser.mly" - ( (Ptype_record ls, priv, oty) ) -# 32129 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) +# 1578 "parsing/parser.mly" + ( _1 ) +# 33119 "parsing/parser.ml" + : (Parsetree.module_expr)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32139,60 +33129,27 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = mty; + MenhirLib.EngineTypes.startp = _startpos_mty_; + MenhirLib.EngineTypes.endp = _endpos_mty_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ls; - MenhirLib.EngineTypes.startp = _startpos_ls_; - MenhirLib.EngineTypes.endp = _endpos_ls_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let ls : (Parsetree.label_declaration list) = Obj.magic ls in - let _3 : unit = Obj.magic _3 in + let mty : (Parsetree.module_type) = Obj.magic mty in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in - let _v = - let priv = -# 3970 "parsing/parser.mly" - ( Private ) -# 32177 "parsing/parser.ml" - in - let oty = - let _1 = -# 123 "" - ( None ) -# 32183 "parsing/parser.ml" - in - -# 3208 "parsing/parser.mly" - ( _1 ) -# 32188 "parsing/parser.ml" - - in - ( -# 3204 "parsing/parser.mly" - ( (Ptype_record ls, priv, oty) ) -# 32194 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) - in + let _endpos = _endpos_mty_ in + let _v : (Parsetree.module_type) = +# 1819 "parsing/parser.mly" + ( mty ) +# 33152 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -32204,73 +33161,80 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ls; - MenhirLib.EngineTypes.startp = _startpos_ls_; - MenhirLib.EngineTypes.endp = _endpos_ls_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let ls : (Parsetree.label_declaration list) = Obj.magic ls in - let _3 : unit = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let x : (Parsetree.core_type) = Obj.magic x in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos__5_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in let _v = - let priv = -# 3969 "parsing/parser.mly" - ( Public ) -# 32249 "parsing/parser.ml" - in - let oty = - let _1 = - let x = -# 196 "" - ( x ) -# 32256 "parsing/parser.ml" - in - -# 126 "" - ( Some x ) -# 32261 "parsing/parser.ml" - - in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 1821 "parsing/parser.mly" + ( expecting _loc__1_ ":" ) +# 33186 "parsing/parser.ml" + : (Parsetree.module_type)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = body; + MenhirLib.EngineTypes.startp = _startpos_body_; + MenhirLib.EngineTypes.endp = _endpos_body_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = arg_and_pos; + MenhirLib.EngineTypes.startp = _startpos_arg_and_pos_; + MenhirLib.EngineTypes.endp = _endpos_arg_and_pos_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let body : (Parsetree.module_type) = Obj.magic body in + let arg_and_pos : (Lexing.position * Parsetree.functor_parameter) = Obj.magic arg_and_pos in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_arg_and_pos_ in + let _endpos = _endpos_body_ in + let _v = + let _1 = + let _1 = +# 1824 "parsing/parser.mly" + ( let (_, arg) = arg_and_pos in + Pmty_functor(arg, body) ) +# 33222 "parsing/parser.ml" + in + let (_endpos__1_, _startpos__1_) = (_endpos_body_, _startpos_arg_and_pos_) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 3208 "parsing/parser.mly" - ( _1 ) -# 32267 "parsing/parser.ml" +# 1017 "parsing/parser.mly" + ( mkmty ~loc:_sloc _1 ) +# 33231 "parsing/parser.ml" in ( -# 3204 "parsing/parser.mly" - ( (Ptype_record ls, priv, oty) ) -# 32273 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) +# 1827 "parsing/parser.mly" + ( _1 ) +# 33237 "parsing/parser.ml" + : (Parsetree.module_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32283,80 +33247,53 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ls; - MenhirLib.EngineTypes.startp = _startpos_ls_; - MenhirLib.EngineTypes.endp = _endpos_ls_; + MenhirLib.EngineTypes.semv = s; + MenhirLib.EngineTypes.startp = _startpos_s_; + MenhirLib.EngineTypes.endp = _endpos_s_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; MenhirLib.EngineTypes.startp = _startpos__1_; MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let ls : (Parsetree.label_declaration list) = Obj.magic ls in - let _3 : unit = Obj.magic _3 in + let _4 : unit = Obj.magic _4 in + let s : (Parsetree.structure) = Obj.magic s in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in - let _2 : unit = Obj.magic _2 in - let x : (Parsetree.core_type) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos__5_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in let _v = - let priv = -# 3970 "parsing/parser.mly" - ( Private ) -# 32335 "parsing/parser.ml" - in - let oty = - let _1 = - let x = -# 196 "" - ( x ) -# 32342 "parsing/parser.ml" - in - -# 126 "" - ( Some x ) -# 32347 "parsing/parser.ml" - - in + let attrs = + let _1 = _1_inlined1 in -# 3208 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 32353 "parsing/parser.ml" +# 33287 "parsing/parser.ml" in + let _endpos = _endpos__4_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in ( -# 3204 "parsing/parser.mly" - ( (Ptype_record ls, priv, oty) ) -# 32359 "parsing/parser.ml" - : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) +# 1407 "parsing/parser.mly" + ( mkmod ~loc:_sloc ~attrs (Pmod_structure s) ) +# 33296 "parsing/parser.ml" + : (Parsetree.module_expr)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32369,51 +33306,52 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = meth_list; - MenhirLib.EngineTypes.startp = _startpos_meth_list_; - MenhirLib.EngineTypes.endp = _endpos_meth_list_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let meth_list : (Parsetree.object_field list * Asttypes.closed_flag) = Obj.magic meth_list in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.structure) = Obj.magic _3 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _endpos = _endpos__4_ in let _v = - let _1 = - let _1 = -# 3626 "parsing/parser.mly" - ( let (f, c) = meth_list in Ptyp_object (f, c) ) -# 32401 "parsing/parser.ml" - in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _2 = + let _1 = _1_inlined1 in -# 1021 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 32410 "parsing/parser.ml" +# 4286 "parsing/parser.mly" + ( _1 ) +# 33346 "parsing/parser.ml" in + let _loc__4_ = (_startpos__4_, _endpos__4_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3630 "parsing/parser.mly" - ( _1 ) -# 32416 "parsing/parser.ml" - : (Parsetree.core_type)) +# 1409 "parsing/parser.mly" + ( unclosed "struct" _loc__1_ "end" _loc__4_ ) +# 33354 "parsing/parser.ml" + : (Parsetree.module_expr)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32443,27 +33381,12 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v = - let _1 = - let _1 = -# 3628 "parsing/parser.mly" - ( Ptyp_object ([], Closed) ) -# 32451 "parsing/parser.ml" - in - let _endpos__1_ = _endpos__2_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1021 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 32460 "parsing/parser.ml" - - in + let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3630 "parsing/parser.mly" - ( _1 ) -# 32466 "parsing/parser.ml" - : (Parsetree.core_type)) +# 1411 "parsing/parser.mly" + ( expecting _loc__1_ "struct" ) +# 33389 "parsing/parser.ml" + : (Parsetree.module_expr)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32476,24 +33399,24 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = me; + MenhirLib.EngineTypes.startp = _startpos_me_; + MenhirLib.EngineTypes.endp = _endpos_me_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = me; - MenhirLib.EngineTypes.startp = _startpos_me_; - MenhirLib.EngineTypes.endp = _endpos_me_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -32505,50 +33428,43 @@ module Tables = struct }; }; } = _menhir_stack in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in let me : (Parsetree.module_expr) = Obj.magic me in + let _4 : unit = Obj.magic _4 in + let _1_inlined2 : ((Lexing.position * Parsetree.functor_parameter) list) = Obj.magic _1_inlined2 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let ext : (string Asttypes.loc option) = Obj.magic ext in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined2_ in + let _endpos = _endpos_me_ in let _v = - let attrs2 = + let args = let _1 = _1_inlined2 in -# 4110 "parsing/parser.mly" +# 1373 "parsing/parser.mly" ( _1 ) -# 32523 "parsing/parser.ml" +# 33446 "parsing/parser.ml" in - let _endpos_attrs2_ = _endpos__1_inlined2_ in - let attrs1 = + let attrs = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 32532 "parsing/parser.ml" +# 33454 "parsing/parser.ml" in - let override = -# 4016 "parsing/parser.mly" - ( Fresh ) -# 32538 "parsing/parser.ml" - in - let _endpos = _endpos_attrs2_ in + let _endpos = _endpos_me_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1680 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let docs = symbol_docs _sloc in - Opn.mk me ~override ~attrs ~loc ~docs, ext - ) -# 32551 "parsing/parser.ml" - : (Parsetree.open_declaration * string Asttypes.loc option)) +# 1413 "parsing/parser.mly" + ( wrap_mod_attrs ~loc:_sloc attrs ( + List.fold_left (fun acc (startpos, arg) -> + mkmod ~loc:(startpos, _endpos) (Pmod_functor (arg, acc)) + ) me args + ) ) +# 33467 "parsing/parser.ml" + : (Parsetree.module_expr)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32557,90 +33473,109 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = me; + MenhirLib.EngineTypes.startp = _startpos_me_; + MenhirLib.EngineTypes.endp = _endpos_me_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let me : (Parsetree.module_expr) = Obj.magic me in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_me_ in + let _endpos = _endpos_me_ in + let _v : (Parsetree.module_expr) = +# 1419 "parsing/parser.mly" + ( me ) +# 33493 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = attr; + MenhirLib.EngineTypes.startp = _startpos_attr_; + MenhirLib.EngineTypes.endp = _endpos_attr_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = me; MenhirLib.EngineTypes.startp = _startpos_me_; MenhirLib.EngineTypes.endp = _endpos_me_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let attr : (Parsetree.attribute) = Obj.magic attr in let me : (Parsetree.module_expr) = Obj.magic me in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let ext : (string Asttypes.loc option) = Obj.magic ext in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_me_ in + let _endpos = _endpos_attr_ in + let _v : (Parsetree.module_expr) = +# 1421 "parsing/parser.mly" + ( Mod.attr me attr ) +# 33525 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined3_ in + let _endpos = _endpos__1_ in let _v = - let attrs2 = - let _1 = _1_inlined3 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 32615 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined3_ in - let attrs1 = - let _1 = _1_inlined2 in + let _1 = + let _1 = + let x = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 33557 "parsing/parser.ml" + + in + +# 1425 "parsing/parser.mly" + ( Pmod_ident x ) +# 33563 "parsing/parser.ml" + + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 4114 "parsing/parser.mly" - ( _1 ) -# 32624 "parsing/parser.ml" +# 1015 "parsing/parser.mly" + ( mkmod ~loc:_sloc _1 ) +# 33572 "parsing/parser.ml" in - let override = -# 4017 "parsing/parser.mly" - ( Override ) -# 32630 "parsing/parser.ml" - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 1680 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let docs = symbol_docs _sloc in - Opn.mk me ~override ~attrs ~loc ~docs, ext - ) -# 32643 "parsing/parser.ml" - : (Parsetree.open_declaration * string Asttypes.loc option)) +# 1436 "parsing/parser.mly" + ( _1 ) +# 33578 "parsing/parser.ml" + : (Parsetree.module_expr)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32653,90 +33588,44 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = me2; + MenhirLib.EngineTypes.startp = _startpos_me2_; + MenhirLib.EngineTypes.endp = _endpos_me2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = me1; + MenhirLib.EngineTypes.startp = _startpos_me1_; + MenhirLib.EngineTypes.endp = _endpos_me1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let _1_inlined2 : (Longident.t) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let ext : (string Asttypes.loc option) = Obj.magic ext in - let _1 : unit = Obj.magic _1 in + let me2 : (Parsetree.module_expr) = Obj.magic me2 in + let me1 : (Parsetree.module_expr) = Obj.magic me1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined3_ in + let _startpos = _startpos_me1_ in + let _endpos = _endpos_me2_ in let _v = - let attrs2 = - let _1 = _1_inlined3 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 32700 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined3_ in - let id = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _1 = + let _1 = +# 1428 "parsing/parser.mly" + ( Pmod_apply(me1, me2) ) +# 33613 "parsing/parser.ml" + in + let (_endpos__1_, _startpos__1_) = (_endpos_me2_, _startpos_me1_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 32712 "parsing/parser.ml" - - in - let attrs1 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 32720 "parsing/parser.ml" +# 1015 "parsing/parser.mly" + ( mkmod ~loc:_sloc _1 ) +# 33622 "parsing/parser.ml" in - let override = -# 4016 "parsing/parser.mly" - ( Fresh ) -# 32726 "parsing/parser.ml" - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 1695 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let docs = symbol_docs _sloc in - Opn.mk id ~override ~attrs ~loc ~docs, ext - ) -# 32739 "parsing/parser.ml" - : (Parsetree.open_description * string Asttypes.loc option)) +# 1436 "parsing/parser.mly" + ( _1 ) +# 33628 "parsing/parser.ml" + : (Parsetree.module_expr)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32749,97 +33638,51 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = me; + MenhirLib.EngineTypes.startp = _startpos_me_; + MenhirLib.EngineTypes.endp = _endpos_me_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let _1_inlined3 : (Longident.t) = Obj.magic _1_inlined3 in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let ext : (string Asttypes.loc option) = Obj.magic ext in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let me : (Parsetree.module_expr) = Obj.magic me in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined4_ in + let _startpos = _startpos_me_ in + let _endpos = _endpos__3_ in let _v = - let attrs2 = - let _1 = _1_inlined4 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 32803 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined4_ in - let id = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in + let _1 = + let _1 = +# 1431 "parsing/parser.mly" + ( Pmod_apply_unit me ) +# 33670 "parsing/parser.ml" + in + let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_me_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 32815 "parsing/parser.ml" - - in - let attrs1 = - let _1 = _1_inlined2 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 32823 "parsing/parser.ml" +# 1015 "parsing/parser.mly" + ( mkmod ~loc:_sloc _1 ) +# 33679 "parsing/parser.ml" in - let override = -# 4017 "parsing/parser.mly" - ( Override ) -# 32829 "parsing/parser.ml" - in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 1695 "parsing/parser.mly" - ( - let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let docs = symbol_docs _sloc in - Opn.mk id ~override ~attrs ~loc ~docs, ext - ) -# 32842 "parsing/parser.ml" - : (Parsetree.open_description * string Asttypes.loc option)) +# 1436 "parsing/parser.mly" + ( _1 ) +# 33685 "parsing/parser.ml" + : (Parsetree.module_expr)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32852,24 +33695,38 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = ex; + MenhirLib.EngineTypes.startp = _startpos_ex_; + MenhirLib.EngineTypes.endp = _endpos_ex_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : ( -# 821 "parsing/parser.mly" - (string) -# 32864 "parsing/parser.ml" - ) = Obj.magic _1 in + let ex : (Parsetree.extension) = Obj.magic ex in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Asttypes.label) = -# 3808 "parsing/parser.mly" - ( _1 ) -# 32872 "parsing/parser.ml" - in + let _startpos = _startpos_ex_ in + let _endpos = _endpos_ex_ in + let _v = + let _1 = + let _1 = +# 1434 "parsing/parser.mly" + ( Pmod_extension ex ) +# 33713 "parsing/parser.ml" + in + let (_endpos__1_, _startpos__1_) = (_endpos_ex_, _startpos_ex_) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1015 "parsing/parser.mly" + ( mkmod ~loc:_sloc _1 ) +# 33722 "parsing/parser.ml" + + in + ( +# 1436 "parsing/parser.mly" + ( _1 ) +# 33728 "parsing/parser.ml" + : (Parsetree.module_expr)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -32881,23 +33738,23 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : ( -# 779 "parsing/parser.mly" + let x : ( +# 836 "parsing/parser.mly" (string) -# 32893 "parsing/parser.ml" - ) = Obj.magic _1 in +# 33750 "parsing/parser.ml" + ) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Asttypes.label) = -# 3809 "parsing/parser.mly" - ( _1 ) -# 32901 "parsing/parser.ml" + let _startpos = _startpos_x_ in + let _endpos = _endpos_x_ in + let _v : (string option) = +# 1390 "parsing/parser.mly" + ( Some x ) +# 33758 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32915,18 +33772,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : ( -# 780 "parsing/parser.mly" - (string) -# 32922 "parsing/parser.ml" - ) = Obj.magic _1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v : (Asttypes.label) = -# 3810 "parsing/parser.mly" - ( _1 ) -# 32930 "parsing/parser.ml" + let _v : (string option) = +# 1393 "parsing/parser.mly" + ( None ) +# 33783 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32939,45 +33792,115 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; }; }; } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let _3 : (string) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : ( -# 778 "parsing/parser.mly" + let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in + let _1_inlined3 : (Longident.t) = Obj.magic _1_inlined3 in + let _5 : unit = Obj.magic _5 in + let _1_inlined2 : ( +# 836 "parsing/parser.mly" (string) -# 32972 "parsing/parser.ml" - ) = Obj.magic _1 in +# 33843 "parsing/parser.ml" + ) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let ext : (string Asttypes.loc option) = Obj.magic ext in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in - let _v : (Asttypes.label) = -# 3811 "parsing/parser.mly" - ( "."^ _1 ^"(" ^ _3 ^ ")" ) -# 32980 "parsing/parser.ml" - in + let _endpos = _endpos__1_inlined4_ in + let _v = + let attrs2 = + let _1 = _1_inlined4 in + +# 4282 "parsing/parser.mly" + ( _1 ) +# 33857 "parsing/parser.ml" + + in + let _endpos_attrs2_ = _endpos__1_inlined4_ in + let body = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 33869 "parsing/parser.ml" + + in + let uid = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 33880 "parsing/parser.ml" + + in + let attrs1 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 33888 "parsing/parser.ml" + + in + let _endpos = _endpos_attrs2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 1857 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let docs = symbol_docs _sloc in + Ms.mk uid body ~attrs ~loc ~docs, ext + ) +# 33902 "parsing/parser.ml" + : (Parsetree.module_substitution * string Asttypes.loc option)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -32989,52 +33912,81 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; }; }; } = _menhir_stack in + let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in - let _4 : unit = Obj.magic _4 in - let _3 : (string) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : ( -# 778 "parsing/parser.mly" + let _1_inlined2 : ( +# 836 "parsing/parser.mly" (string) -# 33029 "parsing/parser.ml" - ) = Obj.magic _1 in +# 33956 "parsing/parser.ml" + ) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : (string Asttypes.loc option) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in - let _v : (Asttypes.label) = -# 3812 "parsing/parser.mly" - ( "."^ _1 ^ "(" ^ _3 ^ ")<-" ) -# 33037 "parsing/parser.ml" - in + let _endpos = _endpos__6_ in + let _v = + let _4 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 33973 "parsing/parser.ml" + + in + let _3 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 33981 "parsing/parser.ml" + + in + let _loc__6_ = (_startpos__6_, _endpos__6_) in + ( +# 1864 "parsing/parser.mly" + ( expecting _loc__6_ "module path" ) +# 33988 "parsing/parser.ml" + : (Parsetree.module_substitution * string Asttypes.loc option)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33051,14 +34003,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = s; + MenhirLib.EngineTypes.startp = _startpos_s_; + MenhirLib.EngineTypes.endp = _endpos_s_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -33070,21 +34022,30 @@ module Tables = struct }; } = _menhir_stack in let _4 : unit = Obj.magic _4 in - let _3 : (string) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : ( -# 778 "parsing/parser.mly" - (string) -# 33079 "parsing/parser.ml" - ) = Obj.magic _1 in + let s : (Parsetree.signature) = Obj.magic s in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in - let _v : (Asttypes.label) = -# 3813 "parsing/parser.mly" - ( "."^ _1 ^"[" ^ _3 ^ "]" ) -# 33087 "parsing/parser.ml" - in + let _v = + let attrs = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 34038 "parsing/parser.ml" + + in + let _endpos = _endpos__4_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 1703 "parsing/parser.mly" + ( mkmty ~loc:_sloc ~attrs (Pmty_signature s) ) +# 34047 "parsing/parser.ml" + : (Parsetree.module_type)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33096,52 +34057,53 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in let _4 : unit = Obj.magic _4 in - let _3 : (string) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : ( -# 778 "parsing/parser.mly" - (string) -# 33136 "parsing/parser.ml" - ) = Obj.magic _1 in + let _3 : (Parsetree.signature) = Obj.magic _3 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in - let _v : (Asttypes.label) = -# 3814 "parsing/parser.mly" - ( "."^ _1 ^ "[" ^ _3 ^ "]<-" ) -# 33144 "parsing/parser.ml" - in + let _endpos = _endpos__4_ in + let _v = + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 34097 "parsing/parser.ml" + + in + let _loc__4_ = (_startpos__4_, _endpos__4_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 1705 "parsing/parser.mly" + ( unclosed "sig" _loc__1_ "end" _loc__4_ ) +# 34105 "parsing/parser.ml" + : (Parsetree.module_type)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33153,45 +34115,30 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let _1 : ( -# 778 "parsing/parser.mly" - (string) -# 33186 "parsing/parser.ml" - ) = Obj.magic _1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in - let _v : (Asttypes.label) = -# 3815 "parsing/parser.mly" - ( "."^ _1 ^"{" ^ _3 ^ "}" ) -# 33194 "parsing/parser.ml" - in + let _endpos = _endpos__2_ in + let _v = + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 1707 "parsing/parser.mly" + ( expecting _loc__1_ "sig" ) +# 34140 "parsing/parser.ml" + : (Parsetree.module_type)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33203,9 +34150,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = mty; + MenhirLib.EngineTypes.startp = _startpos_mty_; + MenhirLib.EngineTypes.endp = _endpos_mty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -33213,14 +34160,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -33232,148 +34179,39 @@ module Tables = struct }; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in + let mty : (Parsetree.module_type) = Obj.magic mty in let _4 : unit = Obj.magic _4 in - let _3 : (string) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : ( -# 778 "parsing/parser.mly" - (string) -# 33243 "parsing/parser.ml" - ) = Obj.magic _1 in + let _1_inlined2 : ((Lexing.position * Parsetree.functor_parameter) list) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in - let _v : (Asttypes.label) = -# 3816 "parsing/parser.mly" - ( "."^ _1 ^ "{" ^ _3 ^ "}<-" ) -# 33251 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : ( -# 832 "parsing/parser.mly" - (string) -# 33272 "parsing/parser.ml" - ) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Asttypes.label) = -# 3817 "parsing/parser.mly" - ( _1 ) -# 33280 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Asttypes.label) = -# 3818 "parsing/parser.mly" - ( "!" ) -# 33305 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = op; - MenhirLib.EngineTypes.startp = _startpos_op_; - MenhirLib.EngineTypes.endp = _endpos_op_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let op : ( -# 773 "parsing/parser.mly" - (string) -# 33326 "parsing/parser.ml" - ) = Obj.magic op in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_op_ in - let _endpos = _endpos_op_ in - let _v = - let _1 = -# 3822 "parsing/parser.mly" - ( op ) -# 33335 "parsing/parser.ml" - in - ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33340 "parsing/parser.ml" - : (Asttypes.label)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = op; - MenhirLib.EngineTypes.startp = _startpos_op_; - MenhirLib.EngineTypes.endp = _endpos_op_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let op : ( -# 774 "parsing/parser.mly" - (string) -# 33362 "parsing/parser.ml" - ) = Obj.magic op in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_op_ in - let _endpos = _endpos_op_ in + let _endpos = _endpos_mty_ in let _v = - let _1 = -# 3823 "parsing/parser.mly" - ( op ) -# 33371 "parsing/parser.ml" - in + let args = + let _1 = _1_inlined2 in + +# 1373 "parsing/parser.mly" + ( _1 ) +# 34197 "parsing/parser.ml" + + in + let attrs = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 34205 "parsing/parser.ml" + + in + let _endpos = _endpos_mty_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33376 "parsing/parser.ml" - : (Asttypes.label)) +# 1711 "parsing/parser.mly" + ( wrap_mty_attrs ~loc:_sloc attrs (mk_functor_typ args mty) ) +# 34214 "parsing/parser.ml" + : (Parsetree.module_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33385,31 +34223,41 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = op; - MenhirLib.EngineTypes.startp = _startpos_op_; - MenhirLib.EngineTypes.endp = _endpos_op_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = mty; + MenhirLib.EngineTypes.startp = _startpos_mty_; + MenhirLib.EngineTypes.endp = _endpos_mty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; } = _menhir_stack in - let op : ( -# 775 "parsing/parser.mly" - (string) -# 33398 "parsing/parser.ml" - ) = Obj.magic op in + let mty : (Parsetree.module_type) = Obj.magic mty in + let _2 : unit = Obj.magic _2 in + let _1 : ((Lexing.position * Parsetree.functor_parameter) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_op_ in - let _endpos = _endpos_op_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos_mty_ in let _v = - let _1 = -# 3824 "parsing/parser.mly" - ( op ) -# 33407 "parsing/parser.ml" + let args = +# 1373 "parsing/parser.mly" + ( _1 ) +# 34255 "parsing/parser.ml" in ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33412 "parsing/parser.ml" - : (Asttypes.label)) +# 1715 "parsing/parser.mly" + ( mk_functor_typ args mty ) +# 34260 "parsing/parser.ml" + : (Parsetree.module_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33421,31 +34269,61 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = op; - MenhirLib.EngineTypes.startp = _startpos_op_; - MenhirLib.EngineTypes.endp = _endpos_op_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; } = _menhir_stack in - let op : ( -# 776 "parsing/parser.mly" - (string) -# 33434 "parsing/parser.ml" - ) = Obj.magic op in + let _5 : (Parsetree.module_expr) = Obj.magic _5 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_op_ in - let _endpos = _endpos_op_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in let _v = - let _1 = -# 3825 "parsing/parser.mly" - ( op ) -# 33443 "parsing/parser.ml" - in + let _4 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 34317 "parsing/parser.ml" + + in + let _endpos = _endpos__5_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33448 "parsing/parser.ml" - : (Asttypes.label)) +# 1717 "parsing/parser.mly" + ( mkmty ~loc:_sloc ~attrs:_4 (Pmty_typeof _5) ) +# 34326 "parsing/parser.ml" + : (Parsetree.module_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33457,32 +34335,35 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = op; - MenhirLib.EngineTypes.startp = _startpos_op_; - MenhirLib.EngineTypes.endp = _endpos_op_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; } = _menhir_stack in - let op : ( -# 777 "parsing/parser.mly" - (string) -# 33470 "parsing/parser.ml" - ) = Obj.magic op in + let _3 : unit = Obj.magic _3 in + let _2 : (Parsetree.module_type) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_op_ in - let _endpos = _endpos_op_ in - let _v = - let _1 = -# 3826 "parsing/parser.mly" - ( op ) -# 33479 "parsing/parser.ml" - in - ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33484 "parsing/parser.ml" - : (Asttypes.label)) - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : (Parsetree.module_type) = +# 1719 "parsing/parser.mly" + ( _2 ) +# 34366 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33493,27 +34374,38 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; } = _menhir_stack in + let _3 : unit = Obj.magic _3 in + let _2 : (Parsetree.module_type) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _endpos = _endpos__3_ in let _v = - let _1 = -# 3827 "parsing/parser.mly" - ("+") -# 33511 "parsing/parser.ml" - in + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33516 "parsing/parser.ml" - : (Asttypes.label)) +# 1721 "parsing/parser.mly" + ( unclosed "(" _loc__1_ ")" _loc__3_ ) +# 34408 "parsing/parser.ml" + : (Parsetree.module_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33525,28 +34417,28 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _2 : (Parsetree.attribute) = Obj.magic _2 in + let _1 : (Parsetree.module_type) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _1 = -# 3828 "parsing/parser.mly" - ("+.") -# 33543 "parsing/parser.ml" - in - ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33548 "parsing/parser.ml" - : (Asttypes.label)) - in + let _endpos = _endpos__2_ in + let _v : (Parsetree.module_type) = +# 1723 "parsing/parser.mly" + ( Mty.attr _1 _2 ) +# 34441 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33563,21 +34455,43 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v = - let _1 = -# 3829 "parsing/parser.mly" - ("+=") -# 33575 "parsing/parser.ml" - in + let _1 = + let _1 = + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 34473 "parsing/parser.ml" + + in + +# 1726 "parsing/parser.mly" + ( Pmty_ident _1 ) +# 34479 "parsing/parser.ml" + + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1017 "parsing/parser.mly" + ( mkmty ~loc:_sloc _1 ) +# 34488 "parsing/parser.ml" + + in ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33580 "parsing/parser.ml" - : (Asttypes.label)) +# 1737 "parsing/parser.mly" + ( _1 ) +# 34494 "parsing/parser.ml" + : (Parsetree.module_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33589,27 +34503,52 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _3 : (Parsetree.module_type) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.module_type) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _endpos = _endpos__3_ in let _v = - let _1 = -# 3830 "parsing/parser.mly" - ("-") -# 33607 "parsing/parser.ml" - in + let _1 = + let _1 = +# 1729 "parsing/parser.mly" + ( Pmty_functor(Named (mknoloc None, _1), _3) ) +# 34536 "parsing/parser.ml" + in + let _endpos__1_ = _endpos__3_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1017 "parsing/parser.mly" + ( mkmty ~loc:_sloc _1 ) +# 34545 "parsing/parser.ml" + + in ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33612 "parsing/parser.ml" - : (Asttypes.label)) +# 1737 "parsing/parser.mly" + ( _1 ) +# 34551 "parsing/parser.ml" + : (Parsetree.module_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33621,27 +34560,66 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let xs : (Parsetree.with_constraint list) = Obj.magic xs in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.module_type) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _endpos = _endpos_xs_ in let _v = - let _1 = -# 3831 "parsing/parser.mly" - ("-.") -# 33639 "parsing/parser.ml" - in + let _1 = + let _1 = + let _3 = + let xs = +# 264 "" + ( List.rev xs ) +# 34595 "parsing/parser.ml" + in + +# 1127 "parsing/parser.mly" + ( xs ) +# 34600 "parsing/parser.ml" + + in + +# 1731 "parsing/parser.mly" + ( Pmty_with(_1, _3) ) +# 34606 "parsing/parser.ml" + + in + let _endpos__1_ = _endpos_xs_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1017 "parsing/parser.mly" + ( mkmty ~loc:_sloc _1 ) +# 34616 "parsing/parser.ml" + + in ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33644 "parsing/parser.ml" - : (Asttypes.label)) +# 1737 "parsing/parser.mly" + ( _1 ) +# 34622 "parsing/parser.ml" + : (Parsetree.module_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33659,21 +34637,31 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _1 : (Parsetree.extension) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v = - let _1 = -# 3832 "parsing/parser.mly" - ("*") -# 33671 "parsing/parser.ml" - in + let _1 = + let _1 = +# 1735 "parsing/parser.mly" + ( Pmty_extension _1 ) +# 34650 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1017 "parsing/parser.mly" + ( mkmty ~loc:_sloc _1 ) +# 34658 "parsing/parser.ml" + + in ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33676 "parsing/parser.ml" - : (Asttypes.label)) +# 1737 "parsing/parser.mly" + ( _1 ) +# 34664 "parsing/parser.ml" + : (Parsetree.module_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33685,27 +34673,100 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = typ; + MenhirLib.EngineTypes.startp = _startpos_typ_; + MenhirLib.EngineTypes.endp = _endpos_typ_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let typ : (Parsetree.module_type option) = Obj.magic typ in + let _1_inlined2 : (Asttypes.label) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let ext : (string Asttypes.loc option) = Obj.magic ext in + let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _endpos = _endpos__1_inlined3_ in let _v = - let _1 = -# 3833 "parsing/parser.mly" - ("%") -# 33703 "parsing/parser.ml" - in + let attrs2 = + let _1 = _1_inlined3 in + +# 4282 "parsing/parser.mly" + ( _1 ) +# 34735 "parsing/parser.ml" + + in + let _endpos_attrs2_ = _endpos__1_inlined3_ in + let id = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 34747 "parsing/parser.ml" + + in + let attrs1 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 34755 "parsing/parser.ml" + + in + let _endpos = _endpos_attrs2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33708 "parsing/parser.ml" - : (Asttypes.label)) +# 1649 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let docs = symbol_docs _sloc in + Mtd.mk id ?typ ~attrs ~loc ~docs, ext + ) +# 34769 "parsing/parser.ml" + : (Parsetree.module_type_declaration * string Asttypes.loc option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33717,27 +34778,107 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = typ; + MenhirLib.EngineTypes.startp = _startpos_typ_; + MenhirLib.EngineTypes.endp = _endpos_typ_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; } = _menhir_stack in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let typ : (Parsetree.module_type) = Obj.magic typ in + let _6 : unit = Obj.magic _6 in + let _1_inlined2 : (Asttypes.label) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let ext : (string Asttypes.loc option) = Obj.magic ext in + let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _endpos = _endpos__1_inlined3_ in let _v = - let _1 = -# 3834 "parsing/parser.mly" - ("=") -# 33735 "parsing/parser.ml" - in + let attrs2 = + let _1 = _1_inlined3 in + +# 4282 "parsing/parser.mly" + ( _1 ) +# 34847 "parsing/parser.ml" + + in + let _endpos_attrs2_ = _endpos__1_inlined3_ in + let id = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 34859 "parsing/parser.ml" + + in + let attrs1 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 34867 "parsing/parser.ml" + + in + let _endpos = _endpos_attrs2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33740 "parsing/parser.ml" - : (Asttypes.label)) +# 1913 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let docs = symbol_docs _sloc in + Mtd.mk id ~typ ~attrs ~loc ~docs, ext + ) +# 34881 "parsing/parser.ml" + : (Parsetree.module_type_declaration * string Asttypes.loc option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33755,22 +34896,15 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _1 : (Longident.t) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v = - let _1 = -# 3835 "parsing/parser.mly" - ("<") -# 33767 "parsing/parser.ml" - in - ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33772 "parsing/parser.ml" - : (Asttypes.label)) - in + let _v : (Longident.t) = +# 4063 "parsing/parser.mly" + ( _1 ) +# 34907 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33780,29 +34914,15 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _1 = -# 3836 "parsing/parser.mly" - (">") -# 33799 "parsing/parser.ml" - in - ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33804 "parsing/parser.ml" - : (Asttypes.label)) - in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Asttypes.mutable_flag) = +# 4144 "parsing/parser.mly" + ( Immutable ) +# 34925 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33823,18 +34943,11 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v = - let _1 = -# 3837 "parsing/parser.mly" - ("or") -# 33831 "parsing/parser.ml" - in - ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33836 "parsing/parser.ml" - : (Asttypes.label)) - in + let _v : (Asttypes.mutable_flag) = +# 4145 "parsing/parser.mly" + ( Mutable ) +# 34950 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33844,29 +34957,15 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _1 = -# 3838 "parsing/parser.mly" - ("||") -# 33863 "parsing/parser.ml" - in - ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33868 "parsing/parser.ml" - : (Asttypes.label)) - in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = +# 4153 "parsing/parser.mly" + ( Immutable, Concrete ) +# 34968 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33887,18 +34986,11 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v = - let _1 = -# 3839 "parsing/parser.mly" - ("&") -# 33895 "parsing/parser.ml" - in - ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33900 "parsing/parser.ml" - : (Asttypes.label)) - in + let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = +# 4155 "parsing/parser.mly" + ( Mutable, Concrete ) +# 34993 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33919,18 +35011,11 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v = - let _1 = -# 3840 "parsing/parser.mly" - ("&&") -# 33927 "parsing/parser.ml" - in - ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33932 "parsing/parser.ml" - : (Asttypes.label)) - in + let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = +# 4157 "parsing/parser.mly" + ( Immutable, Virtual ) +# 35018 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33941,28 +35026,28 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; } = _menhir_stack in + let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _1 = -# 3841 "parsing/parser.mly" - (":=") -# 33959 "parsing/parser.ml" - in - ( -# 3819 "parsing/parser.mly" - ( _1 ) -# 33964 "parsing/parser.ml" - : (Asttypes.label)) - in + let _endpos = _endpos__2_ in + let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = +# 4160 "parsing/parser.mly" + ( Mutable, Virtual ) +# 35050 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -33973,56 +35058,27 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; } = _menhir_stack in + let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (bool) = -# 3716 "parsing/parser.mly" - ( true ) -# 33990 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (bool) = -# 3717 "parsing/parser.mly" - ( false ) -# 34008 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (unit option) = -# 111 "" - ( None ) -# 34026 "parsing/parser.ml" + let _endpos = _endpos__2_ in + let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = +# 4160 "parsing/parser.mly" + ( Mutable, Virtual ) +# 35082 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34034,38 +35090,27 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; } = _menhir_stack in - let x : unit = Obj.magic x in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos_x_ in - let _v : (unit option) = -# 114 "" - ( Some x ) -# 34051 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _2 : (Asttypes.label) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (unit option) = -# 111 "" - ( None ) -# 34069 "parsing/parser.ml" + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Asttypes.label) = +# 4115 "parsing/parser.mly" + ( _2 ) +# 35114 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34078,38 +35123,36 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let x : unit = Obj.magic x in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos_x_ in - let _v : (unit option) = -# 114 "" - ( Some x ) -# 34094 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _1 : ( +# 785 "parsing/parser.mly" + (string) +# 35135 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (string Asttypes.loc option) = -# 111 "" - ( None ) -# 34112 "parsing/parser.ml" - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let x = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 35148 "parsing/parser.ml" + + in + ( +# 228 "" + ( [ x ] ) +# 35154 "parsing/parser.ml" + : (string Asttypes.loc list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -34121,9 +35164,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -34132,39 +35175,31 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _1_inlined1 : ( -# 797 "parsing/parser.mly" + let xs : (string Asttypes.loc list) = Obj.magic xs in + let _1 : ( +# 785 "parsing/parser.mly" (string) -# 34139 "parsing/parser.ml" - ) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in +# 35183 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined1_ in + let _endpos = _endpos_xs_ in let _v = let x = - let x = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 34155 "parsing/parser.ml" - - in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 188 "" - ( x ) -# 34161 "parsing/parser.ml" +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 35196 "parsing/parser.ml" in ( -# 114 "" - ( Some x ) -# 34167 "parsing/parser.ml" - : (string Asttypes.loc option)) +# 231 "" + ( x :: xs ) +# 35202 "parsing/parser.ml" + : (string Asttypes.loc list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34175,15 +35210,33 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = s; + MenhirLib.EngineTypes.startp = _startpos_s_; + MenhirLib.EngineTypes.endp = _endpos_s_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let s : ( +# 823 "parsing/parser.mly" + (string * Location.t * string option) +# 35224 "parsing/parser.ml" + ) = Obj.magic s in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.core_type option) = -# 111 "" - ( None ) -# 34186 "parsing/parser.ml" - in + let _startpos = _startpos_s_ in + let _endpos = _endpos_s_ in + let _v = + let x = +# 4111 "parsing/parser.mly" + ( let body, _, _ = s in body ) +# 35233 "parsing/parser.ml" + in + ( +# 228 "" + ( [ x ] ) +# 35238 "parsing/parser.ml" + : (string list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -34195,33 +35248,37 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = s; + MenhirLib.EngineTypes.startp = _startpos_s_; + MenhirLib.EngineTypes.endp = _endpos_s_; MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let x : (Parsetree.core_type) = Obj.magic x in - let _1 : unit = Obj.magic _1 in + let xs : (string list) = Obj.magic xs in + let s : ( +# 823 "parsing/parser.mly" + (string * Location.t * string option) +# 35267 "parsing/parser.ml" + ) = Obj.magic s in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_x_ in + let _startpos = _startpos_s_ in + let _endpos = _endpos_xs_ in let _v = let x = -# 188 "" - ( x ) -# 34219 "parsing/parser.ml" +# 4111 "parsing/parser.mly" + ( let body, _, _ = s in body ) +# 35276 "parsing/parser.ml" in ( -# 114 "" - ( Some x ) -# 34224 "parsing/parser.ml" - : (Parsetree.core_type option)) +# 231 "" + ( x :: xs ) +# 35281 "parsing/parser.ml" + : (string list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34232,15 +35289,29 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = ty; + MenhirLib.EngineTypes.startp = _startpos_ty_; + MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let ty : (Parsetree.core_type) = Obj.magic ty in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.core_type option) = -# 111 "" - ( None ) -# 34243 "parsing/parser.ml" - in + let _startpos = _startpos_ty_ in + let _endpos = _endpos_ty_ in + let _v = + let priv = +# 4140 "parsing/parser.mly" + ( Public ) +# 35308 "parsing/parser.ml" + in + ( +# 3309 "parsing/parser.mly" + ( (Ptype_abstract, priv, Some ty) ) +# 35313 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -34252,9 +35323,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = ty; + MenhirLib.EngineTypes.startp = _startpos_ty_; + MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -34263,22 +35334,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let x : (Parsetree.core_type) = Obj.magic x in + let ty : (Parsetree.core_type) = Obj.magic ty in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_x_ in + let _endpos = _endpos_ty_ in let _v = - let x = -# 188 "" - ( x ) -# 34276 "parsing/parser.ml" + let priv = +# 4141 "parsing/parser.mly" + ( Private ) +# 35347 "parsing/parser.ml" in ( -# 114 "" - ( Some x ) -# 34281 "parsing/parser.ml" - : (Parsetree.core_type option)) +# 3309 "parsing/parser.mly" + ( (Ptype_abstract, priv, Some ty) ) +# 35352 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34289,15 +35360,41 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = cs; + MenhirLib.EngineTypes.startp = _startpos_cs_; + MenhirLib.EngineTypes.endp = _endpos_cs_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let cs : (Parsetree.constructor_declaration list) = Obj.magic cs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.expression option) = -# 111 "" + let _startpos = _startpos_cs_ in + let _endpos = _endpos_cs_ in + let _v = + let priv = +# 4140 "parsing/parser.mly" + ( Public ) +# 35379 "parsing/parser.ml" + in + let oty = + let _1 = +# 123 "" ( None ) -# 34300 "parsing/parser.ml" - in +# 35385 "parsing/parser.ml" + in + +# 3325 "parsing/parser.mly" + ( _1 ) +# 35390 "parsing/parser.ml" + + in + ( +# 3313 "parsing/parser.mly" + ( (Ptype_variant cs, priv, oty) ) +# 35396 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -34309,9 +35406,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = cs; + MenhirLib.EngineTypes.startp = _startpos_cs_; + MenhirLib.EngineTypes.endp = _endpos_cs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -34320,37 +35417,34 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _1_inlined1 : (Parsetree.expression) = Obj.magic _1_inlined1 in + let cs : (Parsetree.constructor_declaration list) = Obj.magic cs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined1_ in + let _endpos = _endpos_cs_ in let _v = - let x = - let x = - let _1 = _1_inlined1 in - let _1 = -# 2309 "parsing/parser.mly" - ( _1 ) -# 34336 "parsing/parser.ml" - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 34341 "parsing/parser.ml" - - in + let priv = +# 4141 "parsing/parser.mly" + ( Private ) +# 35430 "parsing/parser.ml" + in + let oty = + let _1 = +# 123 "" + ( None ) +# 35436 "parsing/parser.ml" + in -# 188 "" - ( x ) -# 34347 "parsing/parser.ml" +# 3325 "parsing/parser.mly" + ( _1 ) +# 35441 "parsing/parser.ml" in ( -# 114 "" - ( Some x ) -# 34353 "parsing/parser.ml" - : (Parsetree.expression option)) +# 3313 "parsing/parser.mly" + ( (Ptype_variant cs, priv, oty) ) +# 35447 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34363,121 +35457,59 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = cs; + MenhirLib.EngineTypes.startp = _startpos_cs_; + MenhirLib.EngineTypes.endp = _endpos_cs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let xs : (Parsetree.case list) = Obj.magic xs in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let _1_inlined2 : (string Asttypes.loc option) = Obj.magic _1_inlined2 in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let cs : (Parsetree.constructor_declaration list) = Obj.magic cs in + let _2 : unit = Obj.magic _2 in + let x : (Parsetree.core_type) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _startpos = _startpos_x_ in + let _endpos = _endpos_cs_ in let _v = - let x = - let x = - let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined1_, _1_inlined3, _1_inlined2) in - let _1 = - let _3 = - let xs = - let xs = -# 264 "" - ( List.rev xs ) -# 34414 "parsing/parser.ml" - in - -# 1200 "parsing/parser.mly" - ( xs ) -# 34419 "parsing/parser.ml" - - in - -# 2798 "parsing/parser.mly" - ( xs ) -# 34425 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 34436 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 34442 "parsing/parser.ml" - - in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 34462 "parsing/parser.ml" - - in + let priv = +# 4140 "parsing/parser.mly" + ( Public ) +# 35488 "parsing/parser.ml" + in + let oty = + let _1 = + let x = +# 196 "" + ( x ) +# 35495 "parsing/parser.ml" + in -# 2453 "parsing/parser.mly" - ( _1 ) -# 34468 "parsing/parser.ml" +# 126 "" + ( Some x ) +# 35500 "parsing/parser.ml" in -# 188 "" - ( x ) -# 34474 "parsing/parser.ml" +# 3325 "parsing/parser.mly" + ( _1 ) +# 35506 "parsing/parser.ml" in ( -# 114 "" - ( Some x ) -# 34480 "parsing/parser.ml" - : (Parsetree.expression option)) +# 3313 "parsing/parser.mly" + ( (Ptype_variant cs, priv, oty) ) +# 35512 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34486,55 +35518,70 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.module_type option) = -# 111 "" - ( None ) -# 34499 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = cs; + MenhirLib.EngineTypes.startp = _startpos_cs_; + MenhirLib.EngineTypes.endp = _endpos_cs_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1; MenhirLib.EngineTypes.startp = _startpos__1_; MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; }; } = _menhir_stack in - let x : (Parsetree.module_type) = Obj.magic x in + let cs : (Parsetree.constructor_declaration list) = Obj.magic cs in let _1 : unit = Obj.magic _1 in + let _2 : unit = Obj.magic _2 in + let x : (Parsetree.core_type) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_x_ in + let _startpos = _startpos_x_ in + let _endpos = _endpos_cs_ in let _v = - let x = -# 188 "" - ( x ) -# 34532 "parsing/parser.ml" + let priv = +# 4141 "parsing/parser.mly" + ( Private ) +# 35560 "parsing/parser.ml" in - ( -# 114 "" + let oty = + let _1 = + let x = +# 196 "" + ( x ) +# 35567 "parsing/parser.ml" + in + +# 126 "" ( Some x ) -# 34537 "parsing/parser.ml" - : (Parsetree.module_type option)) +# 35572 "parsing/parser.ml" + + in + +# 3325 "parsing/parser.mly" + ( _1 ) +# 35578 "parsing/parser.ml" + + in + ( +# 3313 "parsing/parser.mly" + ( (Ptype_variant cs, priv, oty) ) +# 35584 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34545,15 +35592,41 @@ module Tables = struct }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _3 : unit = Obj.magic _3 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.pattern option) = -# 111 "" + let _startpos = _startpos__3_ in + let _endpos = _endpos__3_ in + let _v = + let priv = +# 4140 "parsing/parser.mly" + ( Public ) +# 35611 "parsing/parser.ml" + in + let oty = + let _1 = +# 123 "" ( None ) -# 34556 "parsing/parser.ml" - in +# 35617 "parsing/parser.ml" + in + +# 3325 "parsing/parser.mly" + ( _1 ) +# 35622 "parsing/parser.ml" + + in + ( +# 3317 "parsing/parser.mly" + ( (Ptype_open, priv, oty) ) +# 35628 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -34565,9 +35638,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -34576,22 +35649,34 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let x : (Parsetree.pattern) = Obj.magic x in + let _3 : unit = Obj.magic _3 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_x_ in + let _endpos = _endpos__3_ in let _v = - let x = -# 188 "" - ( x ) -# 34589 "parsing/parser.ml" + let priv = +# 4141 "parsing/parser.mly" + ( Private ) +# 35662 "parsing/parser.ml" in + let oty = + let _1 = +# 123 "" + ( None ) +# 35668 "parsing/parser.ml" + in + +# 3325 "parsing/parser.mly" + ( _1 ) +# 35673 "parsing/parser.ml" + + in ( -# 114 "" - ( Some x ) -# 34594 "parsing/parser.ml" - : (Parsetree.pattern option)) +# 3317 "parsing/parser.mly" + ( (Ptype_open, priv, oty) ) +# 35679 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34600,55 +35685,63 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.expression option) = -# 111 "" - ( None ) -# 34613 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in - let x : (Parsetree.expression) = Obj.magic x in - let _1 : unit = Obj.magic _1 in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let x : (Parsetree.core_type) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_x_ in + let _startpos = _startpos_x_ in + let _endpos = _endpos__3_ in let _v = - let x = -# 188 "" - ( x ) -# 34646 "parsing/parser.ml" + let priv = +# 4140 "parsing/parser.mly" + ( Public ) +# 35720 "parsing/parser.ml" in - ( -# 114 "" + let oty = + let _1 = + let x = +# 196 "" + ( x ) +# 35727 "parsing/parser.ml" + in + +# 126 "" ( Some x ) -# 34651 "parsing/parser.ml" - : (Parsetree.expression option)) +# 35732 "parsing/parser.ml" + + in + +# 3325 "parsing/parser.mly" + ( _1 ) +# 35738 "parsing/parser.ml" + + in + ( +# 3317 "parsing/parser.mly" + ( (Ptype_open, priv, oty) ) +# 35744 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34657,42 +35750,71 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Parsetree.type_constraint option) = -# 111 "" - ( None ) -# 34670 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; } = _menhir_stack in - let x : (Parsetree.type_constraint) = Obj.magic x in + let _3 : unit = Obj.magic _3 in + let _1 : unit = Obj.magic _1 in + let _2 : unit = Obj.magic _2 in + let x : (Parsetree.core_type) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_x_ in - let _endpos = _endpos_x_ in - let _v : (Parsetree.type_constraint option) = -# 114 "" + let _endpos = _endpos__3_ in + let _v = + let priv = +# 4141 "parsing/parser.mly" + ( Private ) +# 35792 "parsing/parser.ml" + in + let oty = + let _1 = + let x = +# 196 "" + ( x ) +# 35799 "parsing/parser.ml" + in + +# 126 "" ( Some x ) -# 34695 "parsing/parser.ml" - in +# 35804 "parsing/parser.ml" + + in + +# 3325 "parsing/parser.mly" + ( _1 ) +# 35810 "parsing/parser.ml" + + in + ( +# 3317 "parsing/parser.mly" + ( (Ptype_open, priv, oty) ) +# 35816 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -34703,25 +35825,54 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = ls; + MenhirLib.EngineTypes.startp = _startpos_ls_; + MenhirLib.EngineTypes.endp = _endpos_ls_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; } = _menhir_stack in - let _1 : ( -# 814 "parsing/parser.mly" - (string) -# 34716 "parsing/parser.ml" - ) = Obj.magic _1 in + let _5 : unit = Obj.magic _5 in + let ls : (Parsetree.label_declaration list) = Obj.magic ls in + let _3 : unit = Obj.magic _3 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (string) = -# 4028 "parsing/parser.mly" - ( _1 ) -# 34724 "parsing/parser.ml" - in + let _startpos = _startpos__3_ in + let _endpos = _endpos__5_ in + let _v = + let priv = +# 4140 "parsing/parser.mly" + ( Public ) +# 35857 "parsing/parser.ml" + in + let oty = + let _1 = +# 123 "" + ( None ) +# 35863 "parsing/parser.ml" + in + +# 3325 "parsing/parser.mly" + ( _1 ) +# 35868 "parsing/parser.ml" + + in + ( +# 3321 "parsing/parser.mly" + ( (Ptype_record ls, priv, oty) ) +# 35874 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -34733,38 +35884,60 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = ls; + MenhirLib.EngineTypes.startp = _startpos_ls_; + MenhirLib.EngineTypes.endp = _endpos_ls_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let ls : (Parsetree.label_declaration list) = Obj.magic ls in let _3 : unit = Obj.magic _3 in - let _2 : ( -# 797 "parsing/parser.mly" - (string) -# 34758 "parsing/parser.ml" - ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (string) = -# 4029 "parsing/parser.mly" - ( _2 ) -# 34767 "parsing/parser.ml" - in + let _endpos = _endpos__5_ in + let _v = + let priv = +# 4141 "parsing/parser.mly" + ( Private ) +# 35922 "parsing/parser.ml" + in + let oty = + let _1 = +# 123 "" + ( None ) +# 35928 "parsing/parser.ml" + in + +# 3325 "parsing/parser.mly" + ( _1 ) +# 35933 "parsing/parser.ml" + + in + ( +# 3321 "parsing/parser.mly" + ( (Ptype_record ls, priv, oty) ) +# 35939 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -34781,9 +35954,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = mty; - MenhirLib.EngineTypes.startp = _startpos_mty_; - MenhirLib.EngineTypes.endp = _endpos_mty_; + MenhirLib.EngineTypes.semv = ls; + MenhirLib.EngineTypes.startp = _startpos_ls_; + MenhirLib.EngineTypes.endp = _endpos_ls_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -34791,14 +35964,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = me; - MenhirLib.EngineTypes.startp = _startpos_me_; - MenhirLib.EngineTypes.endp = _endpos_me_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; @@ -34806,22 +35979,43 @@ module Tables = struct }; } = _menhir_stack in let _5 : unit = Obj.magic _5 in - let mty : (Parsetree.module_type) = Obj.magic mty in + let ls : (Parsetree.label_declaration list) = Obj.magic ls in let _3 : unit = Obj.magic _3 in - let me : (Parsetree.module_expr) = Obj.magic me in - let _1 : unit = Obj.magic _1 in + let _2 : unit = Obj.magic _2 in + let x : (Parsetree.core_type) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in + let _startpos = _startpos_x_ in let _endpos = _endpos__5_ in let _v = - let _endpos = _endpos__5_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let priv = +# 4140 "parsing/parser.mly" + ( Public ) +# 35994 "parsing/parser.ml" + in + let oty = + let _1 = + let x = +# 196 "" + ( x ) +# 36001 "parsing/parser.ml" + in + +# 126 "" + ( Some x ) +# 36006 "parsing/parser.ml" + + in + +# 3325 "parsing/parser.mly" + ( _1 ) +# 36012 "parsing/parser.ml" + + in ( -# 1457 "parsing/parser.mly" - ( mkmod ~loc:_sloc (Pmod_constraint(me, mty)) ) -# 34824 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 3321 "parsing/parser.mly" + ( (Ptype_record ls, priv, oty) ) +# 36018 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34839,9 +36033,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = ls; + MenhirLib.EngineTypes.startp = _startpos_ls_; + MenhirLib.EngineTypes.endp = _endpos_ls_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -34849,36 +36043,65 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; }; }; } = _menhir_stack in let _5 : unit = Obj.magic _5 in - let _4 : (Parsetree.module_type) = Obj.magic _4 in + let ls : (Parsetree.label_declaration list) = Obj.magic ls in let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.module_expr) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in + let _2 : unit = Obj.magic _2 in + let x : (Parsetree.core_type) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in + let _startpos = _startpos_x_ in let _endpos = _endpos__5_ in let _v = - let _loc__5_ = (_startpos__5_, _endpos__5_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in + let priv = +# 4141 "parsing/parser.mly" + ( Private ) +# 36080 "parsing/parser.ml" + in + let oty = + let _1 = + let x = +# 196 "" + ( x ) +# 36087 "parsing/parser.ml" + in + +# 126 "" + ( Some x ) +# 36092 "parsing/parser.ml" + + in + +# 3325 "parsing/parser.mly" + ( _1 ) +# 36098 "parsing/parser.ml" + + in ( -# 1459 "parsing/parser.mly" - ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 34881 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 3321 "parsing/parser.mly" + ( (Ptype_record ls, priv, oty) ) +# 36104 "parsing/parser.ml" + : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34896,9 +36119,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = me; - MenhirLib.EngineTypes.startp = _startpos_me_; - MenhirLib.EngineTypes.endp = _endpos_me_; + MenhirLib.EngineTypes.semv = meth_list; + MenhirLib.EngineTypes.startp = _startpos_meth_list_; + MenhirLib.EngineTypes.endp = _endpos_meth_list_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -34909,16 +36132,34 @@ module Tables = struct }; } = _menhir_stack in let _3 : unit = Obj.magic _3 in - let me : (Parsetree.module_expr) = Obj.magic me in + let meth_list : (Parsetree.object_field list * Asttypes.closed_flag) = Obj.magic meth_list in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in - let _v : (Parsetree.module_expr) = -# 1462 "parsing/parser.mly" - ( me (* TODO consider reloc *) ) -# 34921 "parsing/parser.ml" - in + let _v = + let _1 = + let _1 = +# 3795 "parsing/parser.mly" + ( let (f, c) = meth_list in Ptyp_object (f, c) ) +# 36146 "parsing/parser.ml" + in + let _endpos__1_ = _endpos__3_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1009 "parsing/parser.mly" + ( mktyp ~loc:_sloc _1 ) +# 36155 "parsing/parser.ml" + + in + ( +# 3799 "parsing/parser.mly" + ( _1 ) +# 36161 "parsing/parser.ml" + : (Parsetree.core_type)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -34930,37 +36171,44 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.module_expr) = Obj.magic _2 in + let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _endpos = _endpos__2_ in let _v = - let _loc__3_ = (_startpos__3_, _endpos__3_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in + let _1 = + let _1 = +# 3797 "parsing/parser.mly" + ( Ptyp_object ([], Closed) ) +# 36196 "parsing/parser.ml" + in + let _endpos__1_ = _endpos__2_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1009 "parsing/parser.mly" + ( mktyp ~loc:_sloc _1 ) +# 36205 "parsing/parser.ml" + + in ( -# 1464 "parsing/parser.mly" - ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 34963 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 3799 "parsing/parser.mly" + ( _1 ) +# 36211 "parsing/parser.ml" + : (Parsetree.core_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34973,14 +36221,14 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = me; + MenhirLib.EngineTypes.startp = _startpos_me_; + MenhirLib.EngineTypes.endp = _endpos_me_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined1; @@ -34988,9 +36236,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -35002,51 +36250,50 @@ module Tables = struct }; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let me : (Parsetree.module_expr) = Obj.magic me in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in + let ext : (string Asttypes.loc option) = Obj.magic ext in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos__1_inlined2_ in let _v = - let e = + let attrs2 = let _1 = _1_inlined2 in - let e = - let _1 = -# 2309 "parsing/parser.mly" - ( _1 ) -# 35021 "parsing/parser.ml" - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 35026 "parsing/parser.ml" - - in -# 1481 "parsing/parser.mly" - ( e ) -# 35032 "parsing/parser.ml" +# 4282 "parsing/parser.mly" + ( _1 ) +# 36268 "parsing/parser.ml" in - let attrs = + let _endpos_attrs2_ = _endpos__1_inlined2_ in + let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 35040 "parsing/parser.ml" +# 36277 "parsing/parser.ml" in - let _endpos = _endpos__5_ in + let override = +# 4187 "parsing/parser.mly" + ( Fresh ) +# 36283 "parsing/parser.ml" + in + let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1468 "parsing/parser.mly" - ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 35049 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 1668 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let docs = symbol_docs _sloc in + Opn.mk me ~override ~attrs ~loc ~docs, ext + ) +# 36296 "parsing/parser.ml" + : (Parsetree.open_declaration * string Asttypes.loc option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35059,153 +36306,86 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = me; + MenhirLib.EngineTypes.startp = _startpos_me_; + MenhirLib.EngineTypes.endp = _endpos_me_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; }; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let xs : (Parsetree.case list) = Obj.magic xs in - let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in - let _1_inlined2 : unit = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let me : (Parsetree.module_expr) = Obj.magic me in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let ext : (string Asttypes.loc option) = Obj.magic ext in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos__1_inlined3_ in let _v = - let e = - let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined2_, _1_inlined4, _1_inlined3) in - let e = - let _1 = - let _3 = - let xs = - let xs = -# 264 "" - ( List.rev xs ) -# 35131 "parsing/parser.ml" - in - -# 1200 "parsing/parser.mly" - ( xs ) -# 35136 "parsing/parser.ml" - - in - -# 2798 "parsing/parser.mly" - ( xs ) -# 35142 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 35153 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 35159 "parsing/parser.ml" - - in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 35179 "parsing/parser.ml" - - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 35185 "parsing/parser.ml" - - in + let attrs2 = + let _1 = _1_inlined3 in -# 1481 "parsing/parser.mly" - ( e ) -# 35191 "parsing/parser.ml" +# 4282 "parsing/parser.mly" + ( _1 ) +# 36360 "parsing/parser.ml" in - let attrs = - let _1 = _1_inlined1 in + let _endpos_attrs2_ = _endpos__1_inlined3_ in + let attrs1 = + let _1 = _1_inlined2 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 35199 "parsing/parser.ml" +# 36369 "parsing/parser.ml" in - let _endpos = _endpos__5_ in + let override = +# 4188 "parsing/parser.mly" + ( Override ) +# 36375 "parsing/parser.ml" + in + let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1468 "parsing/parser.mly" - ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 35208 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 1668 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let docs = symbol_docs _sloc in + Opn.mk me ~override ~attrs ~loc ~docs, ext + ) +# 36388 "parsing/parser.ml" + : (Parsetree.open_declaration * string Asttypes.loc option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35218,112 +36398,90 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2_inlined1; - MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let _1_inlined3 : (Parsetree.module_type) = Obj.magic _1_inlined3 in - let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let _1_inlined2 : (Longident.t) = Obj.magic _1_inlined2 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in + let ext : (string Asttypes.loc option) = Obj.magic ext in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos__1_inlined3_ in let _v = - let e = - let (_endpos__1_inlined1_, _startpos__1_inlined1_, _startpos__1_, _1_inlined1, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _startpos__1_inlined2_, _1_inlined3, _1_inlined2) in - let ty = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3691 "parsing/parser.mly" - ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 35286 "parsing/parser.ml" - - in - let _endpos_ty_ = _endpos__1_inlined1_ in - let e = - let _1 = -# 2309 "parsing/parser.mly" - ( _1 ) -# 35294 "parsing/parser.ml" - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 35299 "parsing/parser.ml" - - in - let _startpos_e_ = _startpos__1_ in - let _endpos = _endpos_ty_ in - let _startpos = _startpos_e_ in - let _loc = (_startpos, _endpos) in + let attrs2 = + let _1 = _1_inlined3 in -# 1483 "parsing/parser.mly" - ( ghexp ~loc:_loc (Pexp_constraint (e, ty)) ) -# 35309 "parsing/parser.ml" +# 4282 "parsing/parser.mly" + ( _1 ) +# 36445 "parsing/parser.ml" in - let attrs = + let _endpos_attrs2_ = _endpos__1_inlined3_ in + let id = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 36457 "parsing/parser.ml" + + in + let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 35317 "parsing/parser.ml" +# 36465 "parsing/parser.ml" in - let _endpos = _endpos__5_ in + let override = +# 4187 "parsing/parser.mly" + ( Fresh ) +# 36471 "parsing/parser.ml" + in + let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1468 "parsing/parser.mly" - ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 35326 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 1683 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let docs = symbol_docs _sloc in + Opn.mk id ~override ~attrs ~loc ~docs, ext + ) +# 36484 "parsing/parser.ml" + : (Parsetree.open_description * string Asttypes.loc option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35336,185 +36494,97 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined5; - MenhirLib.EngineTypes.startp = _startpos__1_inlined5_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined5_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2_inlined1; - MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; }; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let _1_inlined5 : (Parsetree.module_type) = Obj.magic _1_inlined5 in - let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let xs : (Parsetree.case list) = Obj.magic xs in let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in - let _1_inlined2 : unit = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in + let _1_inlined3 : (Longident.t) = Obj.magic _1_inlined3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let ext : (string Asttypes.loc option) = Obj.magic ext in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos__1_inlined4_ in let _v = - let e = - let (_endpos__1_inlined3_, _startpos__1_inlined3_, _startpos__1_, _1_inlined3, _1_inlined2, _1_inlined1) = (_endpos__1_inlined5_, _startpos__1_inlined5_, _startpos__1_inlined2_, _1_inlined5, _1_inlined4, _1_inlined3) in - let ty = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3691 "parsing/parser.mly" - ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 35425 "parsing/parser.ml" - - in - let _endpos_ty_ = _endpos__1_inlined3_ in - let e = - let _1 = - let _3 = - let xs = - let xs = -# 264 "" - ( List.rev xs ) -# 35436 "parsing/parser.ml" - in - -# 1200 "parsing/parser.mly" - ( xs ) -# 35441 "parsing/parser.ml" - - in - -# 2798 "parsing/parser.mly" - ( xs ) -# 35447 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" + let attrs2 = + let _1 = _1_inlined4 in + +# 4282 "parsing/parser.mly" ( _1 ) -# 35458 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 35464 "parsing/parser.ml" - - in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 35484 "parsing/parser.ml" - - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 35490 "parsing/parser.ml" - - in - let _startpos_e_ = _startpos__1_ in - let _endpos = _endpos_ty_ in - let _startpos = _startpos_e_ in - let _loc = (_startpos, _endpos) in +# 36548 "parsing/parser.ml" -# 1483 "parsing/parser.mly" - ( ghexp ~loc:_loc (Pexp_constraint (e, ty)) ) -# 35500 "parsing/parser.ml" + in + let _endpos_attrs2_ = _endpos__1_inlined4_ in + let id = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 36560 "parsing/parser.ml" in - let attrs = - let _1 = _1_inlined1 in + let attrs1 = + let _1 = _1_inlined2 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 35508 "parsing/parser.ml" +# 36568 "parsing/parser.ml" in - let _endpos = _endpos__5_ in + let override = +# 4188 "parsing/parser.mly" + ( Override ) +# 36574 "parsing/parser.ml" + in + let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1468 "parsing/parser.mly" - ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 35517 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 1683 "parsing/parser.mly" + ( + let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let docs = symbol_docs _sloc in + Opn.mk id ~override ~attrs ~loc ~docs, ext + ) +# 36587 "parsing/parser.ml" + : (Parsetree.open_description * string Asttypes.loc option)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35523,143 +36593,5733 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : ( +# 809 "parsing/parser.mly" + (string) +# 36609 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Asttypes.label) = +# 3979 "parsing/parser.mly" + ( _1 ) +# 36617 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : ( +# 767 "parsing/parser.mly" + (string) +# 36638 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Asttypes.label) = +# 3980 "parsing/parser.mly" + ( _1 ) +# 36646 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : ( +# 768 "parsing/parser.mly" + (string) +# 36667 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Asttypes.label) = +# 3981 "parsing/parser.mly" + ( _1 ) +# 36675 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2_inlined1; - MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let _1_inlined4 : (Parsetree.module_type) = Obj.magic _1_inlined4 in let _4 : unit = Obj.magic _4 in - let _1_inlined3 : (Parsetree.module_type) = Obj.magic _1_inlined3 in - let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _1 : ( +# 766 "parsing/parser.mly" + (string) +# 36717 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in - let _v = - let e = - let (_endpos__1_inlined2_, _startpos__1_inlined2_, _endpos__1_inlined1_, _startpos__1_inlined1_, _startpos__1_, _1_inlined2, _1_inlined1, _1) = (_endpos__1_inlined4_, _startpos__1_inlined4_, _endpos__1_inlined3_, _startpos__1_inlined3_, _startpos__1_inlined2_, _1_inlined4, _1_inlined3, _1_inlined2) in - let ty2 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3691 "parsing/parser.mly" - ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 35609 "parsing/parser.ml" - + let _endpos = _endpos__4_ in + let _v : (Asttypes.label) = +# 3982 "parsing/parser.mly" + ( "."^ _1 ^"(" ^ _3 ^ ")" ) +# 36725 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _3 : (string) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : ( +# 766 "parsing/parser.mly" + (string) +# 36774 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v : (Asttypes.label) = +# 3983 "parsing/parser.mly" + ( "."^ _1 ^ "(" ^ _3 ^ ")<-" ) +# 36782 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let _4 : unit = Obj.magic _4 in + let _3 : (string) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : ( +# 766 "parsing/parser.mly" + (string) +# 36824 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in + let _v : (Asttypes.label) = +# 3984 "parsing/parser.mly" + ( "."^ _1 ^"[" ^ _3 ^ "]" ) +# 36832 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _3 : (string) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : ( +# 766 "parsing/parser.mly" + (string) +# 36881 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v : (Asttypes.label) = +# 3985 "parsing/parser.mly" + ( "."^ _1 ^ "[" ^ _3 ^ "]<-" ) +# 36889 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let _4 : unit = Obj.magic _4 in + let _3 : (string) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : ( +# 766 "parsing/parser.mly" + (string) +# 36931 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in + let _v : (Asttypes.label) = +# 3986 "parsing/parser.mly" + ( "."^ _1 ^"{" ^ _3 ^ "}" ) +# 36939 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _3 : (string) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : ( +# 766 "parsing/parser.mly" + (string) +# 36988 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v : (Asttypes.label) = +# 3987 "parsing/parser.mly" + ( "."^ _1 ^ "{" ^ _3 ^ "}<-" ) +# 36996 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : ( +# 820 "parsing/parser.mly" + (string) +# 37017 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Asttypes.label) = +# 3988 "parsing/parser.mly" + ( _1 ) +# 37025 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Asttypes.label) = +# 3989 "parsing/parser.mly" + ( "!" ) +# 37050 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = op; + MenhirLib.EngineTypes.startp = _startpos_op_; + MenhirLib.EngineTypes.endp = _endpos_op_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let op : ( +# 761 "parsing/parser.mly" + (string) +# 37071 "parsing/parser.ml" + ) = Obj.magic op in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_op_ in + let _endpos = _endpos_op_ in + let _v = + let _1 = +# 3993 "parsing/parser.mly" + ( op ) +# 37080 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37085 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = op; + MenhirLib.EngineTypes.startp = _startpos_op_; + MenhirLib.EngineTypes.endp = _endpos_op_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let op : ( +# 762 "parsing/parser.mly" + (string) +# 37107 "parsing/parser.ml" + ) = Obj.magic op in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_op_ in + let _endpos = _endpos_op_ in + let _v = + let _1 = +# 3994 "parsing/parser.mly" + ( op ) +# 37116 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37121 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = op; + MenhirLib.EngineTypes.startp = _startpos_op_; + MenhirLib.EngineTypes.endp = _endpos_op_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let op : ( +# 763 "parsing/parser.mly" + (string) +# 37143 "parsing/parser.ml" + ) = Obj.magic op in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_op_ in + let _endpos = _endpos_op_ in + let _v = + let _1 = +# 3995 "parsing/parser.mly" + ( op ) +# 37152 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37157 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = op; + MenhirLib.EngineTypes.startp = _startpos_op_; + MenhirLib.EngineTypes.endp = _endpos_op_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let op : ( +# 764 "parsing/parser.mly" + (string) +# 37179 "parsing/parser.ml" + ) = Obj.magic op in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_op_ in + let _endpos = _endpos_op_ in + let _v = + let _1 = +# 3996 "parsing/parser.mly" + ( op ) +# 37188 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37193 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = op; + MenhirLib.EngineTypes.startp = _startpos_op_; + MenhirLib.EngineTypes.endp = _endpos_op_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let op : ( +# 765 "parsing/parser.mly" + (string) +# 37215 "parsing/parser.ml" + ) = Obj.magic op in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_op_ in + let _endpos = _endpos_op_ in + let _v = + let _1 = +# 3997 "parsing/parser.mly" + ( op ) +# 37224 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37229 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 3998 "parsing/parser.mly" + ("+") +# 37256 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37261 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 3999 "parsing/parser.mly" + ("+.") +# 37288 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37293 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4000 "parsing/parser.mly" + ("+=") +# 37320 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37325 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4001 "parsing/parser.mly" + ("-") +# 37352 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37357 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4002 "parsing/parser.mly" + ("-.") +# 37384 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37389 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4003 "parsing/parser.mly" + ("*") +# 37416 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37421 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4004 "parsing/parser.mly" + ("%") +# 37448 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37453 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4005 "parsing/parser.mly" + ("=") +# 37480 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37485 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4006 "parsing/parser.mly" + ("<") +# 37512 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37517 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4007 "parsing/parser.mly" + (">") +# 37544 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37549 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4008 "parsing/parser.mly" + ("or") +# 37576 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37581 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4009 "parsing/parser.mly" + ("||") +# 37608 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37613 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4010 "parsing/parser.mly" + ("&") +# 37640 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37645 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4011 "parsing/parser.mly" + ("&&") +# 37672 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37677 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4012 "parsing/parser.mly" + (":=") +# 37704 "parsing/parser.ml" + in + ( +# 3990 "parsing/parser.mly" + ( _1 ) +# 37709 "parsing/parser.ml" + : (Asttypes.label)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (bool) = +# 3887 "parsing/parser.mly" + ( true ) +# 37735 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (bool) = +# 3888 "parsing/parser.mly" + ( false ) +# 37753 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (unit option) = +# 111 "" + ( None ) +# 37771 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let x : unit = Obj.magic x in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_x_ in + let _endpos = _endpos_x_ in + let _v : (unit option) = +# 114 "" + ( Some x ) +# 37796 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (unit option) = +# 111 "" + ( None ) +# 37814 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let x : unit = Obj.magic x in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_x_ in + let _endpos = _endpos_x_ in + let _v : (unit option) = +# 114 "" + ( Some x ) +# 37839 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (string Asttypes.loc option) = +# 111 "" + ( None ) +# 37857 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _1_inlined1 : ( +# 785 "parsing/parser.mly" + (string) +# 37884 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_inlined1_ in + let _v = + let x = + let x = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 37900 "parsing/parser.ml" + + in + +# 188 "" + ( x ) +# 37906 "parsing/parser.ml" + + in + ( +# 114 "" + ( Some x ) +# 37912 "parsing/parser.ml" + : (string Asttypes.loc option)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.core_type option) = +# 111 "" + ( None ) +# 37931 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let x : (Parsetree.core_type) = Obj.magic x in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_x_ in + let _v = + let x = +# 188 "" + ( x ) +# 37964 "parsing/parser.ml" + in + ( +# 114 "" + ( Some x ) +# 37969 "parsing/parser.ml" + : (Parsetree.core_type option)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.core_type option) = +# 111 "" + ( None ) +# 37988 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let x : (Parsetree.core_type) = Obj.magic x in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_x_ in + let _v = + let x = +# 188 "" + ( x ) +# 38021 "parsing/parser.ml" + in + ( +# 114 "" + ( Some x ) +# 38026 "parsing/parser.ml" + : (Parsetree.core_type option)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.expression option) = +# 111 "" + ( None ) +# 38045 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _1_inlined1 : (Parsetree.expression) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_inlined1_ in + let _v = + let x = + let x = + let _1 = _1_inlined1 in + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 38081 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 38086 "parsing/parser.ml" + + in + +# 188 "" + ( x ) +# 38092 "parsing/parser.ml" + + in + ( +# 114 "" + ( Some x ) +# 38098 "parsing/parser.ml" + : (Parsetree.expression option)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let _1_inlined2 : (string Asttypes.loc option) = Obj.magic _1_inlined2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_xs_ in + let _v = + let x = + let x = + let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined1_, _1_inlined3, _1_inlined2) in + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 38159 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 38164 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 38170 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 38181 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 38187 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 38207 "parsing/parser.ml" + + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 38213 "parsing/parser.ml" + + in + +# 188 "" + ( x ) +# 38219 "parsing/parser.ml" + + in + ( +# 114 "" + ( Some x ) +# 38225 "parsing/parser.ml" + : (Parsetree.expression option)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.module_type option) = +# 111 "" + ( None ) +# 38244 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let x : (Parsetree.module_type) = Obj.magic x in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_x_ in + let _v = + let x = +# 188 "" + ( x ) +# 38277 "parsing/parser.ml" + in + ( +# 114 "" + ( Some x ) +# 38282 "parsing/parser.ml" + : (Parsetree.module_type option)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.pattern option) = +# 111 "" + ( None ) +# 38301 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let x : (Parsetree.pattern) = Obj.magic x in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_x_ in + let _v = + let x = +# 188 "" + ( x ) +# 38334 "parsing/parser.ml" + in + ( +# 114 "" + ( Some x ) +# 38339 "parsing/parser.ml" + : (Parsetree.pattern option)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.expression option) = +# 111 "" + ( None ) +# 38358 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let x : (Parsetree.expression) = Obj.magic x in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_x_ in + let _v = + let x = +# 188 "" + ( x ) +# 38391 "parsing/parser.ml" + in + ( +# 114 "" + ( Some x ) +# 38396 "parsing/parser.ml" + : (Parsetree.expression option)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.type_constraint option) = +# 111 "" + ( None ) +# 38415 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let x : (Parsetree.type_constraint) = Obj.magic x in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_x_ in + let _endpos = _endpos_x_ in + let _v : (Parsetree.type_constraint option) = +# 114 "" + ( Some x ) +# 38440 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : ( +# 802 "parsing/parser.mly" + (string) +# 38461 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (string) = +# 4199 "parsing/parser.mly" + ( _1 ) +# 38469 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : unit = Obj.magic _3 in + let _2 : ( +# 785 "parsing/parser.mly" + (string) +# 38503 "parsing/parser.ml" + ) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : (string) = +# 4200 "parsing/parser.mly" + ( _2 ) +# 38512 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = mty; + MenhirLib.EngineTypes.startp = _startpos_mty_; + MenhirLib.EngineTypes.endp = _endpos_mty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = me; + MenhirLib.EngineTypes.startp = _startpos_me_; + MenhirLib.EngineTypes.endp = _endpos_me_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let mty : (Parsetree.module_type) = Obj.magic mty in + let _3 : unit = Obj.magic _3 in + let me : (Parsetree.module_expr) = Obj.magic me in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v = + let _endpos = _endpos__5_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 1445 "parsing/parser.mly" + ( mkmod ~loc:_sloc (Pmod_constraint(me, mty)) ) +# 38569 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let _4 : (Parsetree.module_type) = Obj.magic _4 in + let _3 : unit = Obj.magic _3 in + let _2 : (Parsetree.module_expr) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v = + let _loc__5_ = (_startpos__5_, _endpos__5_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 1447 "parsing/parser.mly" + ( unclosed "(" _loc__1_ ")" _loc__5_ ) +# 38626 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = me; + MenhirLib.EngineTypes.startp = _startpos_me_; + MenhirLib.EngineTypes.endp = _endpos_me_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : unit = Obj.magic _3 in + let me : (Parsetree.module_expr) = Obj.magic me in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : (Parsetree.module_expr) = +# 1450 "parsing/parser.mly" + ( me (* TODO consider reloc *) ) +# 38666 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : unit = Obj.magic _3 in + let _2 : (Parsetree.module_expr) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 1452 "parsing/parser.mly" + ( unclosed "(" _loc__1_ ")" _loc__3_ ) +# 38708 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v = + let e = + let _1 = _1_inlined2 in + let e = + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 38766 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 38771 "parsing/parser.ml" + + in + +# 1469 "parsing/parser.mly" + ( e ) +# 38777 "parsing/parser.ml" + + in + let attrs = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 38785 "parsing/parser.ml" + + in + let _endpos = _endpos__5_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 1456 "parsing/parser.mly" + ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) +# 38794 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in + let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in + let _1_inlined2 : unit = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v = + let e = + let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined2_, _1_inlined4, _1_inlined3) in + let e = + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 38876 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 38881 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 38887 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 38898 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 38904 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 38924 "parsing/parser.ml" + + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 38930 "parsing/parser.ml" + + in + +# 1469 "parsing/parser.mly" + ( e ) +# 38936 "parsing/parser.ml" + + in + let attrs = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 38944 "parsing/parser.ml" + + in + let _endpos = _endpos__5_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 1456 "parsing/parser.mly" + ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) +# 38953 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let _1_inlined3 : (Parsetree.module_type) = Obj.magic _1_inlined3 in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v = + let e = + let (_endpos__1_inlined1_, _startpos__1_inlined1_, _startpos__1_, _1_inlined1, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _startpos__1_inlined2_, _1_inlined3, _1_inlined2) in + let ty = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3860 "parsing/parser.mly" + ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 39031 "parsing/parser.ml" + + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3864 "parsing/parser.mly" + ( mktyp ~loc:_sloc (Ptyp_package _1) ) +# 39040 "parsing/parser.ml" + + in + let _endpos_ty_ = _endpos__1_inlined1_ in + let e = + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 39048 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 39053 "parsing/parser.ml" + + in + let _startpos_e_ = _startpos__1_ in + let _endpos = _endpos_ty_ in + let _startpos = _startpos_e_ in + let _loc = (_startpos, _endpos) in + +# 1471 "parsing/parser.mly" + ( ghexp ~loc:_loc (Pexp_constraint (e, ty)) ) +# 39063 "parsing/parser.ml" + + in + let attrs = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 39071 "parsing/parser.ml" + + in + let _endpos = _endpos__5_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 1456 "parsing/parser.mly" + ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) +# 39080 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined5; + MenhirLib.EngineTypes.startp = _startpos__1_inlined5_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let _1_inlined5 : (Parsetree.module_type) = Obj.magic _1_inlined5 in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in + let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in + let _1_inlined2 : unit = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v = + let e = + let (_endpos__1_inlined3_, _startpos__1_inlined3_, _startpos__1_, _1_inlined3, _1_inlined2, _1_inlined1) = (_endpos__1_inlined5_, _startpos__1_inlined5_, _startpos__1_inlined2_, _1_inlined5, _1_inlined4, _1_inlined3) in + let ty = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3860 "parsing/parser.mly" + ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 39179 "parsing/parser.ml" + + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3864 "parsing/parser.mly" + ( mktyp ~loc:_sloc (Ptyp_package _1) ) +# 39188 "parsing/parser.ml" + + in + let _endpos_ty_ = _endpos__1_inlined3_ in + let e = + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 39199 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 39204 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 39210 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 39221 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 39227 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 39247 "parsing/parser.ml" + + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 39253 "parsing/parser.ml" + + in + let _startpos_e_ = _startpos__1_ in + let _endpos = _endpos_ty_ in + let _startpos = _startpos_e_ in + let _loc = (_startpos, _endpos) in + +# 1471 "parsing/parser.mly" + ( ghexp ~loc:_loc (Pexp_constraint (e, ty)) ) +# 39263 "parsing/parser.ml" + + in + let attrs = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 39271 "parsing/parser.ml" + + in + let _endpos = _endpos__5_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 1456 "parsing/parser.mly" + ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) +# 39280 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let _1_inlined4 : (Parsetree.module_type) = Obj.magic _1_inlined4 in + let _4 : unit = Obj.magic _4 in + let _1_inlined3 : (Parsetree.module_type) = Obj.magic _1_inlined3 in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v = + let e = + let (_endpos__1_inlined2_, _startpos__1_inlined2_, _endpos__1_inlined1_, _startpos__1_inlined1_, _startpos__1_, _1_inlined2, _1_inlined1, _1) = (_endpos__1_inlined4_, _startpos__1_inlined4_, _endpos__1_inlined3_, _startpos__1_inlined3_, _startpos__1_inlined2_, _1_inlined4, _1_inlined3, _1_inlined2) in + let ty2 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3860 "parsing/parser.mly" + ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 39372 "parsing/parser.ml" + + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3864 "parsing/parser.mly" + ( mktyp ~loc:_sloc (Ptyp_package _1) ) +# 39381 "parsing/parser.ml" + + in + let _endpos_ty2_ = _endpos__1_inlined2_ in + let ty1 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3860 "parsing/parser.mly" + ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 39395 "parsing/parser.ml" + + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3864 "parsing/parser.mly" + ( mktyp ~loc:_sloc (Ptyp_package _1) ) +# 39404 "parsing/parser.ml" + + in + let e = + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 39411 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 39416 "parsing/parser.ml" + + in + let _startpos_e_ = _startpos__1_ in + let _endpos = _endpos_ty2_ in + let _startpos = _startpos_e_ in + let _loc = (_startpos, _endpos) in + +# 1473 "parsing/parser.mly" + ( ghexp ~loc:_loc (Pexp_coerce (e, Some ty1, ty2)) ) +# 39426 "parsing/parser.ml" + + in + let attrs = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 39434 "parsing/parser.ml" + + in + let _endpos = _endpos__5_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 1456 "parsing/parser.mly" + ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) +# 39443 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined6; + MenhirLib.EngineTypes.startp = _startpos__1_inlined6_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined5; + MenhirLib.EngineTypes.startp = _startpos__1_inlined5_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let _1_inlined6 : (Parsetree.module_type) = Obj.magic _1_inlined6 in + let _4 : unit = Obj.magic _4 in + let _1_inlined5 : (Parsetree.module_type) = Obj.magic _1_inlined5 in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in + let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in + let _1_inlined2 : unit = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v = + let e = + let (_endpos__1_inlined4_, _startpos__1_inlined4_, _endpos__1_inlined3_, _startpos__1_inlined3_, _startpos__1_, _1_inlined4, _1_inlined3, _1_inlined2, _1_inlined1) = (_endpos__1_inlined6_, _startpos__1_inlined6_, _endpos__1_inlined5_, _startpos__1_inlined5_, _startpos__1_inlined2_, _1_inlined6, _1_inlined5, _1_inlined4, _1_inlined3) in + let ty2 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined4_, _startpos__1_inlined4_, _1_inlined4) in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3860 "parsing/parser.mly" + ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 39556 "parsing/parser.ml" + + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3864 "parsing/parser.mly" + ( mktyp ~loc:_sloc (Ptyp_package _1) ) +# 39565 "parsing/parser.ml" + + in + let _endpos_ty2_ = _endpos__1_inlined4_ in + let ty1 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3860 "parsing/parser.mly" + ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 39579 "parsing/parser.ml" + + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3864 "parsing/parser.mly" + ( mktyp ~loc:_sloc (Ptyp_package _1) ) +# 39588 "parsing/parser.ml" + + in + let e = + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 39598 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 39603 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 39609 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 39620 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 39626 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 39646 "parsing/parser.ml" + + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 39652 "parsing/parser.ml" + + in + let _startpos_e_ = _startpos__1_ in + let _endpos = _endpos_ty2_ in + let _startpos = _startpos_e_ in + let _loc = (_startpos, _endpos) in + +# 1473 "parsing/parser.mly" + ( ghexp ~loc:_loc (Pexp_coerce (e, Some ty1, ty2)) ) +# 39662 "parsing/parser.ml" + + in + let attrs = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 39670 "parsing/parser.ml" + + in + let _endpos = _endpos__5_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 1456 "parsing/parser.mly" + ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) +# 39679 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let _1_inlined3 : (Parsetree.module_type) = Obj.magic _1_inlined3 in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v = + let e = + let (_endpos__1_inlined1_, _startpos__1_inlined1_, _startpos__1_, _1_inlined1, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _startpos__1_inlined2_, _1_inlined3, _1_inlined2) in + let ty2 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3860 "parsing/parser.mly" + ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 39757 "parsing/parser.ml" + + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3864 "parsing/parser.mly" + ( mktyp ~loc:_sloc (Ptyp_package _1) ) +# 39766 "parsing/parser.ml" + + in + let _endpos_ty2_ = _endpos__1_inlined1_ in + let e = + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 39774 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 39779 "parsing/parser.ml" + + in + let _startpos_e_ = _startpos__1_ in + let _endpos = _endpos_ty2_ in + let _startpos = _startpos_e_ in + let _loc = (_startpos, _endpos) in + +# 1475 "parsing/parser.mly" + ( ghexp ~loc:_loc (Pexp_coerce (e, None, ty2)) ) +# 39789 "parsing/parser.ml" + + in + let attrs = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 39797 "parsing/parser.ml" + + in + let _endpos = _endpos__5_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 1456 "parsing/parser.mly" + ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) +# 39806 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined5; + MenhirLib.EngineTypes.startp = _startpos__1_inlined5_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let _1_inlined5 : (Parsetree.module_type) = Obj.magic _1_inlined5 in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in + let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in + let _1_inlined2 : unit = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v = + let e = + let (_endpos__1_inlined3_, _startpos__1_inlined3_, _startpos__1_, _1_inlined3, _1_inlined2, _1_inlined1) = (_endpos__1_inlined5_, _startpos__1_inlined5_, _startpos__1_inlined2_, _1_inlined5, _1_inlined4, _1_inlined3) in + let ty2 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3860 "parsing/parser.mly" + ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 39905 "parsing/parser.ml" + + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3864 "parsing/parser.mly" + ( mktyp ~loc:_sloc (Ptyp_package _1) ) +# 39914 "parsing/parser.ml" + + in + let _endpos_ty2_ = _endpos__1_inlined3_ in + let e = + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 39925 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 39930 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 39936 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 39947 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 39953 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 39973 "parsing/parser.ml" + + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 39979 "parsing/parser.ml" + + in + let _startpos_e_ = _startpos__1_ in + let _endpos = _endpos_ty2_ in + let _startpos = _startpos_e_ in + let _loc = (_startpos, _endpos) in + +# 1475 "parsing/parser.mly" + ( ghexp ~loc:_loc (Pexp_coerce (e, None, ty2)) ) +# 39989 "parsing/parser.ml" + + in + let attrs = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 39997 "parsing/parser.ml" + + in + let _endpos = _endpos__5_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 1456 "parsing/parser.mly" + ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) +# 40006 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _6 : unit = Obj.magic _6 in + let _5 : unit = Obj.magic _5 in + let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__6_ in + let _v = + let _4 = + let _1 = _1_inlined2 in + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 40070 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 40075 "parsing/parser.ml" + + in + let _3 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 40083 "parsing/parser.ml" + + in + let _loc__6_ = (_startpos__6_, _endpos__6_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 1458 "parsing/parser.mly" + ( unclosed "(" _loc__1_ ")" _loc__6_ ) +# 40091 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _6 : unit = Obj.magic _6 in + let _5 : unit = Obj.magic _5 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in + let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in + let _1_inlined2 : unit = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__6_ in + let _v = + let _4 = + let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined2_, _1_inlined4, _1_inlined3) in + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 40179 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 40184 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 40190 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 40201 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 40207 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 40227 "parsing/parser.ml" + + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 40233 "parsing/parser.ml" + + in + let _3 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 40241 "parsing/parser.ml" + + in + let _loc__6_ = (_startpos__6_, _endpos__6_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 1458 "parsing/parser.mly" + ( unclosed "(" _loc__1_ ")" _loc__6_ ) +# 40249 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _6 : unit = Obj.magic _6 in + let _5 : unit = Obj.magic _5 in + let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__6_ in + let _v = + let _4 = + let _1 = _1_inlined2 in + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 40313 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 40318 "parsing/parser.ml" + + in + let _3 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 40326 "parsing/parser.ml" + + in + let _loc__6_ = (_startpos__6_, _endpos__6_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 1460 "parsing/parser.mly" + ( unclosed "(" _loc__1_ ")" _loc__6_ ) +# 40334 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _6 : unit = Obj.magic _6 in + let _5 : unit = Obj.magic _5 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in + let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in + let _1_inlined2 : unit = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__6_ in + let _v = + let _4 = + let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined2_, _1_inlined4, _1_inlined3) in + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 40422 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 40427 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 40433 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 40444 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 40450 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 40470 "parsing/parser.ml" + + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 40476 "parsing/parser.ml" + + in + let _3 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 40484 "parsing/parser.ml" + + in + let _loc__6_ = (_startpos__6_, _endpos__6_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 1460 "parsing/parser.mly" + ( unclosed "(" _loc__1_ ")" _loc__6_ ) +# 40492 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v = + let _4 = + let _1 = _1_inlined2 in + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 40549 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 40554 "parsing/parser.ml" + + in + let _3 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 40562 "parsing/parser.ml" + + in + let _loc__5_ = (_startpos__5_, _endpos__5_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 1462 "parsing/parser.mly" + ( unclosed "(" _loc__1_ ")" _loc__5_ ) +# 40570 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in + let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in + let _1_inlined2 : unit = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v = + let _4 = + let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined2_, _1_inlined4, _1_inlined3) in + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 40651 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 40656 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 40662 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 40673 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 40679 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 40699 "parsing/parser.ml" + + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 40705 "parsing/parser.ml" + + in + let _3 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 40713 "parsing/parser.ml" + + in + let _loc__5_ = (_startpos__5_, _endpos__5_) in + let _loc__1_ = (_startpos__1_, _endpos__1_) in + ( +# 1462 "parsing/parser.mly" + ( unclosed "(" _loc__1_ ")" _loc__5_ ) +# 40721 "parsing/parser.ml" + : (Parsetree.module_expr)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Longident.t) = +# 1363 "parsing/parser.mly" + ( _1 ) +# 40754 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Longident.t) = +# 1348 "parsing/parser.mly" + ( _1 ) +# 40786 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.core_type) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Parsetree.core_type) = +# 1323 "parsing/parser.mly" + ( _1 ) +# 40818 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.expression) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Parsetree.expression) = +# 1328 "parsing/parser.mly" + ( _1 ) +# 40850 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Longident.t) = +# 1353 "parsing/parser.mly" + ( _1 ) +# 40882 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Longident.t) = +# 1358 "parsing/parser.mly" + ( _1 ) +# 40914 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.module_expr) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Parsetree.module_expr) = +# 1318 "parsing/parser.mly" + ( _1 ) +# 40946 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.module_type) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Parsetree.module_type) = +# 1313 "parsing/parser.mly" + ( _1 ) +# 40978 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Longident.t) = +# 1338 "parsing/parser.mly" + ( _1 ) +# 41010 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Parsetree.pattern) = +# 1333 "parsing/parser.mly" + ( _1 ) +# 41042 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Longident.t) = +# 1343 "parsing/parser.mly" + ( _1 ) +# 41074 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : (Parsetree.pattern) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _1 = + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _loc__2_ = (_startpos__2_, _endpos__2_) in + let _sloc = (_symbolstartpos, _endpos) in + +# 2980 "parsing/parser.mly" + ( mkpat_cons ~loc:_sloc _loc__2_ + (ghpat ~loc:_sloc (Ppat_tuple ([None, _1; None, _3], Closed))) ) +# 41120 "parsing/parser.ml" + + in + ( +# 2966 "parsing/parser.mly" + ( _1 ) +# 41126 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : (Parsetree.attribute) = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v = + let _1 = +# 2983 "parsing/parser.mly" + ( Pat.attr _1 _2 ) +# 41160 "parsing/parser.ml" + in + ( +# 2966 "parsing/parser.mly" + ( _1 ) +# 41165 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 2985 "parsing/parser.mly" + ( _1 ) +# 41192 "parsing/parser.ml" + in + ( +# 2966 "parsing/parser.mly" + ( _1 ) +# 41197 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_inlined1_ in + let _v = + let _1 = + let _1 = + let _1 = + let _3 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 41246 "parsing/parser.ml" + + in + +# 2988 "parsing/parser.mly" + ( Ppat_alias(_1, _3) ) +# 41252 "parsing/parser.ml" + + in + let _endpos__1_ = _endpos__1_inlined1_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 41262 "parsing/parser.ml" + + in + +# 2999 "parsing/parser.mly" + ( _1 ) +# 41268 "parsing/parser.ml" + + in + ( +# 2966 "parsing/parser.mly" + ( _1 ) +# 41274 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _1 = + let _1 = + let _1 = + let _loc__3_ = (_startpos__3_, _endpos__3_) in + +# 2990 "parsing/parser.mly" + ( expecting _loc__3_ "identifier" ) +# 41319 "parsing/parser.ml" + + in + let _endpos__1_ = _endpos__3_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 41329 "parsing/parser.ml" + + in + +# 2999 "parsing/parser.mly" + ( _1 ) +# 41335 "parsing/parser.ml" + + in + ( +# 2966 "parsing/parser.mly" + ( _1 ) +# 41341 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.pattern_desc) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = + let _1 = + let _1 = +# 2992 "parsing/parser.mly" + ( _1 ) +# 41370 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 41378 "parsing/parser.ml" + + in + +# 2999 "parsing/parser.mly" + ( _1 ) +# 41384 "parsing/parser.ml" + + in + ( +# 2966 "parsing/parser.mly" + ( _1 ) +# 41390 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _1 = + let _1 = + let _1 = + let _loc__3_ = (_startpos__3_, _endpos__3_) in + +# 2994 "parsing/parser.mly" + ( expecting _loc__3_ "pattern" ) +# 41435 "parsing/parser.ml" + + in + let _endpos__1_ = _endpos__3_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 41445 "parsing/parser.ml" + + in + +# 2999 "parsing/parser.mly" + ( _1 ) +# 41451 "parsing/parser.ml" + + in + ( +# 2966 "parsing/parser.mly" + ( _1 ) +# 41457 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : (Parsetree.pattern) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _1 = + let _1 = + let _1 = +# 2996 "parsing/parser.mly" + ( Ppat_or(_1, _3) ) +# 41500 "parsing/parser.ml" + in + let _endpos__1_ = _endpos__3_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 41509 "parsing/parser.ml" + + in + +# 2999 "parsing/parser.mly" + ( _1 ) +# 41515 "parsing/parser.ml" + + in + ( +# 2966 "parsing/parser.mly" + ( _1 ) +# 41521 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _1 = + let _1 = + let _1 = + let _loc__3_ = (_startpos__3_, _endpos__3_) in + +# 2998 "parsing/parser.mly" + ( expecting _loc__3_ "pattern" ) +# 41566 "parsing/parser.ml" + + in + let _endpos__1_ = _endpos__3_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 41576 "parsing/parser.ml" + + in + +# 2999 "parsing/parser.mly" + ( _1 ) +# 41582 "parsing/parser.ml" + + in + ( +# 2966 "parsing/parser.mly" + ( _1 ) +# 41588 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let _3 : (Parsetree.pattern) = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 41640 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 41646 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 2968 "parsing/parser.mly" + ( mkpat_attrs ~loc:_sloc (Ppat_exception _3) _2) +# 41655 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let _4 : (Parsetree.pattern) = Obj.magic _4 in + let _3 : unit = Obj.magic _3 in + let _2 : (Parsetree.pattern) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__4_ in + let _v = + let _endpos = _endpos__4_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 2970 "parsing/parser.mly" + ( mkpat ~loc:_sloc (Ppat_effect(_2,_4)) ) +# 41706 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.pattern) = +# 3004 "parsing/parser.mly" + ( _1 ) +# 41732 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : (Parsetree.pattern) = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v = + let _1 = + let _1 = + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 41771 "parsing/parser.ml" + + in + +# 3007 "parsing/parser.mly" + ( Ppat_construct(_1, Some ([], _2)) ) +# 41777 "parsing/parser.ml" + in - let _endpos_ty2_ = _endpos__1_inlined2_ in - let ty1 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _endpos__1_ = _endpos__2_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 41787 "parsing/parser.ml" + + in + ( +# 3013 "parsing/parser.mly" + ( _1 ) +# 41793 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = pat; + MenhirLib.EngineTypes.startp = _startpos_pat_; + MenhirLib.EngineTypes.endp = _endpos_pat_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + } = _menhir_stack in + let pat : (Parsetree.pattern) = Obj.magic pat in + let _5 : unit = Obj.magic _5 in + let xs : (string Asttypes.loc list) = Obj.magic xs in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Longident.t) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_pat_ in + let _v = + let _1 = + let _1 = + let newtypes = +# 2664 "parsing/parser.mly" + ( xs ) +# 41857 "parsing/parser.ml" + in + let constr = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 41866 "parsing/parser.ml" + + in + +# 3010 "parsing/parser.mly" + ( Ppat_construct(constr, Some (newtypes, pat)) ) +# 41872 "parsing/parser.ml" + + in + let _endpos__1_ = _endpos_pat_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 41882 "parsing/parser.ml" + + in + ( +# 3013 "parsing/parser.mly" + ( _1 ) +# 41888 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : (Parsetree.pattern) = Obj.magic _2 in + let _1 : (Asttypes.label) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v = + let _1 = + let _1 = +# 3012 "parsing/parser.mly" + ( Ppat_variant(_1, Some _2) ) +# 41923 "parsing/parser.ml" + in + let _endpos__1_ = _endpos__2_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 41932 "parsing/parser.ml" + + in + ( +# 3013 "parsing/parser.mly" + ( _1 ) +# 41938 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let _3 : (Parsetree.pattern) = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 41990 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 41996 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + ( +# 3015 "parsing/parser.mly" + ( mkpat_attrs ~loc:_sloc (Ppat_lazy _3) _2) +# 42005 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : (Parsetree.pattern) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _1 = + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _loc__2_ = (_startpos__2_, _endpos__2_) in + let _sloc = (_symbolstartpos, _endpos) in + +# 2980 "parsing/parser.mly" + ( mkpat_cons ~loc:_sloc _loc__2_ + (ghpat ~loc:_sloc (Ppat_tuple ([None, _1; None, _3], Closed))) ) +# 42052 "parsing/parser.ml" + + in + ( +# 2975 "parsing/parser.mly" + ( _1 ) +# 42058 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : (Parsetree.attribute) = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v = + let _1 = +# 2983 "parsing/parser.mly" + ( Pat.attr _1 _2 ) +# 42092 "parsing/parser.ml" + in + ( +# 2975 "parsing/parser.mly" + ( _1 ) +# 42097 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 2985 "parsing/parser.mly" + ( _1 ) +# 42124 "parsing/parser.ml" + in + ( +# 2975 "parsing/parser.mly" + ( _1 ) +# 42129 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_inlined1_ in + let _v = + let _1 = + let _1 = + let _1 = + let _3 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 42178 "parsing/parser.ml" + + in + +# 2988 "parsing/parser.mly" + ( Ppat_alias(_1, _3) ) +# 42184 "parsing/parser.ml" + + in + let _endpos__1_ = _endpos__1_inlined1_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3691 "parsing/parser.mly" - ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 35623 "parsing/parser.ml" +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 42194 "parsing/parser.ml" in - let e = - let _1 = -# 2309 "parsing/parser.mly" + +# 2999 "parsing/parser.mly" + ( _1 ) +# 42200 "parsing/parser.ml" + + in + ( +# 2975 "parsing/parser.mly" + ( _1 ) +# 42206 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _1 = + let _1 = + let _1 = + let _loc__3_ = (_startpos__3_, _endpos__3_) in + +# 2990 "parsing/parser.mly" + ( expecting _loc__3_ "identifier" ) +# 42251 "parsing/parser.ml" + + in + let _endpos__1_ = _endpos__3_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 42261 "parsing/parser.ml" + + in + +# 2999 "parsing/parser.mly" + ( _1 ) +# 42267 "parsing/parser.ml" + + in + ( +# 2975 "parsing/parser.mly" ( _1 ) -# 35630 "parsing/parser.ml" +# 42273 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.pattern_desc) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = + let _1 = + let _1 = +# 2992 "parsing/parser.mly" + ( _1 ) +# 42302 "parsing/parser.ml" in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 2453 "parsing/parser.mly" - ( _1 ) -# 35635 "parsing/parser.ml" +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 42310 "parsing/parser.ml" in - let _startpos_e_ = _startpos__1_ in - let _endpos = _endpos_ty2_ in - let _startpos = _startpos_e_ in - let _loc = (_startpos, _endpos) in - -# 1485 "parsing/parser.mly" - ( ghexp ~loc:_loc (Pexp_coerce (e, Some ty1, ty2)) ) -# 35645 "parsing/parser.ml" - in - let attrs = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" +# 2999 "parsing/parser.mly" ( _1 ) -# 35653 "parsing/parser.ml" +# 42316 "parsing/parser.ml" in - let _endpos = _endpos__5_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 1468 "parsing/parser.mly" - ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 35662 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 2975 "parsing/parser.mly" + ( _1 ) +# 42322 "parsing/parser.ml" + : (Parsetree.pattern)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35672,212 +42332,125 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined6; - MenhirLib.EngineTypes.startp = _startpos__1_inlined6_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined6_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined5; - MenhirLib.EngineTypes.startp = _startpos__1_inlined5_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined5_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2_inlined1; - MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let _1_inlined6 : (Parsetree.module_type) = Obj.magic _1_inlined6 in - let _4 : unit = Obj.magic _4 in - let _1_inlined5 : (Parsetree.module_type) = Obj.magic _1_inlined5 in - let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let xs : (Parsetree.case list) = Obj.magic xs in - let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in - let _1_inlined2 : unit = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _3 : unit = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos__3_ in let _v = - let e = - let (_endpos__1_inlined4_, _startpos__1_inlined4_, _endpos__1_inlined3_, _startpos__1_inlined3_, _startpos__1_, _1_inlined4, _1_inlined3, _1_inlined2, _1_inlined1) = (_endpos__1_inlined6_, _startpos__1_inlined6_, _endpos__1_inlined5_, _startpos__1_inlined5_, _startpos__1_inlined2_, _1_inlined6, _1_inlined5, _1_inlined4, _1_inlined3) in - let ty2 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined4_, _startpos__1_inlined4_, _1_inlined4) in + let _1 = + let _1 = + let _1 = + let _loc__3_ = (_startpos__3_, _endpos__3_) in + +# 2994 "parsing/parser.mly" + ( expecting _loc__3_ "pattern" ) +# 42367 "parsing/parser.ml" + + in + let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3691 "parsing/parser.mly" - ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 35775 "parsing/parser.ml" +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 42377 "parsing/parser.ml" in - let _endpos_ty2_ = _endpos__1_inlined4_ in - let ty1 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in + +# 2999 "parsing/parser.mly" + ( _1 ) +# 42383 "parsing/parser.ml" + + in + ( +# 2975 "parsing/parser.mly" + ( _1 ) +# 42389 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + } = _menhir_stack in + let _3 : (Parsetree.pattern) = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v = + let _1 = + let _1 = + let _1 = +# 2996 "parsing/parser.mly" + ( Ppat_or(_1, _3) ) +# 42432 "parsing/parser.ml" + in + let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3691 "parsing/parser.mly" - ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 35789 "parsing/parser.ml" - - in - let e = - let _1 = - let _3 = - let xs = - let xs = -# 264 "" - ( List.rev xs ) -# 35799 "parsing/parser.ml" - in - -# 1200 "parsing/parser.mly" - ( xs ) -# 35804 "parsing/parser.ml" - - in - -# 2798 "parsing/parser.mly" - ( xs ) -# 35810 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 35821 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 35827 "parsing/parser.ml" - - in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 35847 "parsing/parser.ml" - - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 35853 "parsing/parser.ml" +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 42441 "parsing/parser.ml" in - let _startpos_e_ = _startpos__1_ in - let _endpos = _endpos_ty2_ in - let _startpos = _startpos_e_ in - let _loc = (_startpos, _endpos) in - -# 1485 "parsing/parser.mly" - ( ghexp ~loc:_loc (Pexp_coerce (e, Some ty1, ty2)) ) -# 35863 "parsing/parser.ml" - - in - let attrs = - let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 2999 "parsing/parser.mly" ( _1 ) -# 35871 "parsing/parser.ml" +# 42447 "parsing/parser.ml" in - let _endpos = _endpos__5_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 1468 "parsing/parser.mly" - ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 35880 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 2975 "parsing/parser.mly" + ( _1 ) +# 42453 "parsing/parser.ml" + : (Parsetree.pattern)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35890,112 +42463,161 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2_inlined1; - MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let _1_inlined3 : (Parsetree.module_type) = Obj.magic _1_inlined3 in - let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _3 : unit = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos__3_ in let _v = - let e = - let (_endpos__1_inlined1_, _startpos__1_inlined1_, _startpos__1_, _1_inlined1, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _startpos__1_inlined2_, _1_inlined3, _1_inlined2) in - let ty2 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _1 = + let _1 = + let _1 = + let _loc__3_ = (_startpos__3_, _endpos__3_) in + +# 2998 "parsing/parser.mly" + ( expecting _loc__3_ "pattern" ) +# 42498 "parsing/parser.ml" + + in + let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3691 "parsing/parser.mly" - ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 35958 "parsing/parser.ml" +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 42508 "parsing/parser.ml" in - let _endpos_ty2_ = _endpos__1_inlined1_ in - let e = - let _1 = -# 2309 "parsing/parser.mly" + +# 2999 "parsing/parser.mly" + ( _1 ) +# 42514 "parsing/parser.ml" + + in + ( +# 2975 "parsing/parser.mly" ( _1 ) -# 35966 "parsing/parser.ml" - in +# 42520 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : ( +# 785 "parsing/parser.mly" + (string) +# 42542 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = + let _1 = + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 42557 "parsing/parser.ml" + + in -# 2453 "parsing/parser.mly" - ( _1 ) -# 35971 "parsing/parser.ml" +# 2356 "parsing/parser.mly" + ( Ppat_var _1 ) +# 42563 "parsing/parser.ml" in - let _startpos_e_ = _startpos__1_ in - let _endpos = _endpos_ty2_ in - let _startpos = _startpos_e_ in - let _loc = (_startpos, _endpos) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 1487 "parsing/parser.mly" - ( ghexp ~loc:_loc (Pexp_coerce (e, None, ty2)) ) -# 35981 "parsing/parser.ml" +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 42572 "parsing/parser.ml" in - let attrs = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" + ( +# 2358 "parsing/parser.mly" ( _1 ) -# 35989 "parsing/parser.ml" +# 42578 "parsing/parser.ml" + : (Parsetree.pattern)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v = + let _1 = + let _1 = +# 2357 "parsing/parser.mly" + ( Ppat_any ) +# 42606 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1007 "parsing/parser.mly" + ( mkpat ~loc:_sloc _1 ) +# 42614 "parsing/parser.ml" in - let _endpos = _endpos__5_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 1468 "parsing/parser.mly" - ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 35998 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 2358 "parsing/parser.mly" + ( _1 ) +# 42620 "parsing/parser.ml" + : (Parsetree.pattern)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36004,190 +42626,120 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.structure) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.payload) = +# 4312 "parsing/parser.mly" + ( PStr _1 ) +# 42646 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : (Parsetree.signature) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Parsetree.payload) = +# 4313 "parsing/parser.mly" + ( PSig _2 ) +# 42678 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let _2 : (Parsetree.core_type) = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__2_ in + let _v : (Parsetree.payload) = +# 4314 "parsing/parser.mly" + ( PTyp _2 ) +# 42710 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined5; - MenhirLib.EngineTypes.startp = _startpos__1_inlined5_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined5_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2_inlined1; - MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let _1_inlined5 : (Parsetree.module_type) = Obj.magic _1_inlined5 in - let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let xs : (Parsetree.case list) = Obj.magic xs in - let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in - let _1_inlined2 : unit = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in + let _2 : (Parsetree.pattern) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in - let _v = - let e = - let (_endpos__1_inlined3_, _startpos__1_inlined3_, _startpos__1_, _1_inlined3, _1_inlined2, _1_inlined1) = (_endpos__1_inlined5_, _startpos__1_inlined5_, _startpos__1_inlined2_, _1_inlined5, _1_inlined4, _1_inlined3) in - let ty2 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3691 "parsing/parser.mly" - ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 36097 "parsing/parser.ml" - - in - let _endpos_ty2_ = _endpos__1_inlined3_ in - let e = - let _1 = - let _3 = - let xs = - let xs = -# 264 "" - ( List.rev xs ) -# 36108 "parsing/parser.ml" - in - -# 1200 "parsing/parser.mly" - ( xs ) -# 36113 "parsing/parser.ml" - - in - -# 2798 "parsing/parser.mly" - ( xs ) -# 36119 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 36130 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 36136 "parsing/parser.ml" - - in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 36156 "parsing/parser.ml" - - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 36162 "parsing/parser.ml" - - in - let _startpos_e_ = _startpos__1_ in - let _endpos = _endpos_ty2_ in - let _startpos = _startpos_e_ in - let _loc = (_startpos, _endpos) in - -# 1487 "parsing/parser.mly" - ( ghexp ~loc:_loc (Pexp_coerce (e, None, ty2)) ) -# 36172 "parsing/parser.ml" - - in - let attrs = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 36180 "parsing/parser.ml" - - in - let _endpos = _endpos__5_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - ( -# 1468 "parsing/parser.mly" - ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 36189 "parsing/parser.ml" - : (Parsetree.module_expr)) - in + let _endpos = _endpos__2_ in + let _v : (Parsetree.payload) = +# 4315 "parsing/parser.mly" + ( PPat (_2, None) ) +# 42742 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -36199,80 +42751,66 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _6 : unit = Obj.magic _6 in - let _5 : unit = Obj.magic _5 in - let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in + let _4 : (Parsetree.expression) = Obj.magic _4 in + let _3 : unit = Obj.magic _3 in + let _2 : (Parsetree.pattern) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__6_ in - let _v = - let _4 = - let _1 = _1_inlined2 in - let _1 = -# 2309 "parsing/parser.mly" - ( _1 ) -# 36253 "parsing/parser.ml" - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 36258 "parsing/parser.ml" - - in - let _3 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" + let _endpos = _endpos__4_ in + let _v : (Parsetree.payload) = +# 4316 "parsing/parser.mly" + ( PPat (_2, Some _4) ) +# 42788 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Parsetree.core_type) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Parsetree.core_type) = +# 3598 "parsing/parser.mly" ( _1 ) -# 36266 "parsing/parser.ml" - - in - let _loc__6_ = (_startpos__6_, _endpos__6_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in - ( -# 1470 "parsing/parser.mly" - ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 36274 "parsing/parser.ml" - : (Parsetree.module_expr)) - in +# 42813 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -36284,152 +42822,72 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = xs; MenhirLib.EngineTypes.startp = _startpos_xs_; MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - }; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let _6 : unit = Obj.magic _6 in - let _5 : unit = Obj.magic _5 in - let xs : (Parsetree.case list) = Obj.magic xs in - let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in - let _1_inlined2 : unit = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _3 : (Parsetree.core_type) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__6_ in + let _startpos = _startpos_xs_ in + let _endpos = _endpos__3_ in let _v = - let _4 = - let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined2_, _1_inlined4, _1_inlined3) in + let _1 = let _1 = - let _3 = - let xs = + let _1 = + let _1 = let xs = # 264 "" ( List.rev xs ) -# 36362 "parsing/parser.ml" +# 42857 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1074 "parsing/parser.mly" ( xs ) -# 36367 "parsing/parser.ml" +# 42862 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" - ( xs ) -# 36373 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" +# 3590 "parsing/parser.mly" ( _1 ) -# 36384 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 36390 "parsing/parser.ml" +# 42868 "parsing/parser.ml" in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 36410 "parsing/parser.ml" +# 3594 "parsing/parser.mly" + ( Ptyp_poly(_1, _3) ) +# 42874 "parsing/parser.ml" in + let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_xs_) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 2453 "parsing/parser.mly" - ( _1 ) -# 36416 "parsing/parser.ml" - - in - let _3 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 36424 "parsing/parser.ml" +# 1009 "parsing/parser.mly" + ( mktyp ~loc:_sloc _1 ) +# 42884 "parsing/parser.ml" in - let _loc__6_ = (_startpos__6_, _endpos__6_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1470 "parsing/parser.mly" - ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 36432 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 3600 "parsing/parser.mly" + ( _1 ) +# 42890 "parsing/parser.ml" + : (Parsetree.core_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36441,80 +42899,27 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _6 : unit = Obj.magic _6 in - let _5 : unit = Obj.magic _5 in - let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _1 : (Parsetree.core_type) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__6_ in + let _endpos = _endpos__1_ in let _v = - let _4 = - let _1 = _1_inlined2 in - let _1 = -# 2309 "parsing/parser.mly" - ( _1 ) -# 36496 "parsing/parser.ml" - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 36501 "parsing/parser.ml" - - in - let _3 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" + let _1 = +# 3629 "parsing/parser.mly" ( _1 ) -# 36509 "parsing/parser.ml" - - in - let _loc__6_ = (_startpos__6_, _endpos__6_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in +# 42917 "parsing/parser.ml" + in ( -# 1472 "parsing/parser.mly" - ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 36517 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 3598 "parsing/parser.mly" + ( _1 ) +# 42922 "parsing/parser.ml" + : (Parsetree.core_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36527,152 +42932,77 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - }; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let _6 : unit = Obj.magic _6 in - let _5 : unit = Obj.magic _5 in - let xs : (Parsetree.case list) = Obj.magic xs in - let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in - let _1_inlined2 : unit = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in + let _1 : (Parsetree.core_type) = Obj.magic _1 in let _2 : unit = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__6_ in + let _startpos = _startpos_xs_ in + let _endpos = _endpos__1_ in let _v = - let _4 = - let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined2_, _1_inlined4, _1_inlined3) in + let _1 = let _1 = - let _3 = - let xs = + let _3 = +# 3629 "parsing/parser.mly" + ( _1 ) +# 42965 "parsing/parser.ml" + in + let _1 = + let _1 = let xs = # 264 "" ( List.rev xs ) -# 36605 "parsing/parser.ml" +# 42972 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1074 "parsing/parser.mly" ( xs ) -# 36610 "parsing/parser.ml" +# 42977 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" - ( xs ) -# 36616 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" +# 3590 "parsing/parser.mly" ( _1 ) -# 36627 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 36633 "parsing/parser.ml" +# 42983 "parsing/parser.ml" in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 36653 "parsing/parser.ml" +# 3594 "parsing/parser.mly" + ( Ptyp_poly(_1, _3) ) +# 42989 "parsing/parser.ml" in + let _startpos__1_ = _startpos_xs_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 2453 "parsing/parser.mly" - ( _1 ) -# 36659 "parsing/parser.ml" - - in - let _3 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 36667 "parsing/parser.ml" +# 1009 "parsing/parser.mly" + ( mktyp ~loc:_sloc _1 ) +# 42999 "parsing/parser.ml" in - let _loc__6_ = (_startpos__6_, _endpos__6_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 1472 "parsing/parser.mly" - ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 36675 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 3600 "parsing/parser.mly" + ( _1 ) +# 43005 "parsing/parser.ml" + : (Parsetree.core_type)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36685,72 +43015,45 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _5 : unit = Obj.magic _5 in - let _1_inlined2 : (Parsetree.expression) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in + let _4 : unit = Obj.magic _4 in + let _3 : (Parsetree.payload) = Obj.magic _3 in + let _2 : (Ast_helper.str) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos__4_ in let _v = - let _4 = - let _1 = _1_inlined2 in - let _1 = -# 2309 "parsing/parser.mly" - ( _1 ) -# 36732 "parsing/parser.ml" - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 36737 "parsing/parser.ml" - - in - let _3 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 36745 "parsing/parser.ml" - - in - let _loc__5_ = (_startpos__5_, _endpos__5_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in + let _endpos = _endpos__4_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in ( -# 1474 "parsing/parser.mly" - ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 36753 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 4273 "parsing/parser.mly" + ( mk_attr ~loc:(make_loc _sloc) _2 _3 ) +# 43056 "parsing/parser.ml" + : (Parsetree.attribute)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36763,45 +43066,51 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = prim; + MenhirLib.EngineTypes.startp = _startpos_prim_; + MenhirLib.EngineTypes.endp = _endpos_prim_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = ty; + MenhirLib.EngineTypes.startp = _startpos_ty_; + MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; }; @@ -36810,98 +43119,84 @@ module Tables = struct }; }; } = _menhir_stack in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let prim : (string list) = Obj.magic prim in + let _7 : unit = Obj.magic _7 in + let ty : (Parsetree.core_type) = Obj.magic ty in let _5 : unit = Obj.magic _5 in - let xs : (Parsetree.case list) = Obj.magic xs in - let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let _1_inlined3 : (string Asttypes.loc option) = Obj.magic _1_inlined3 in - let _1_inlined2 : unit = Obj.magic _1_inlined2 in + let _1_inlined2 : (Asttypes.label) = Obj.magic _1_inlined2 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in + let ext : (string Asttypes.loc option) = Obj.magic ext in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos__1_inlined3_ in let _v = - let _4 = - let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined2_, _1_inlined4, _1_inlined3) in - let _1 = - let _3 = - let xs = - let xs = -# 264 "" - ( List.rev xs ) -# 36834 "parsing/parser.ml" - in - -# 1200 "parsing/parser.mly" - ( xs ) -# 36839 "parsing/parser.ml" - - in - -# 2798 "parsing/parser.mly" - ( xs ) -# 36845 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" + let attrs2 = + let _1 = _1_inlined3 in + +# 4282 "parsing/parser.mly" ( _1 ) -# 36856 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 36862 "parsing/parser.ml" - - in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 36882 "parsing/parser.ml" - - in +# 43141 "parsing/parser.ml" -# 2453 "parsing/parser.mly" - ( _1 ) -# 36888 "parsing/parser.ml" + in + let _endpos_attrs2_ = _endpos__1_inlined3_ in + let id = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 972 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 43153 "parsing/parser.ml" in - let _3 = + let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 36896 "parsing/parser.ml" +# 43161 "parsing/parser.ml" in - let _loc__5_ = (_startpos__5_, _endpos__5_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in + let _endpos = _endpos_attrs2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in ( -# 1474 "parsing/parser.mly" - ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 36904 "parsing/parser.ml" - : (Parsetree.module_expr)) +# 3219 "parsing/parser.mly" + ( let attrs = attrs1 @ attrs2 in + let loc = make_loc _sloc in + let docs = symbol_docs _sloc in + Val.mk id ty ~prim ~attrs ~loc ~docs, + ext ) +# 43174 "parsing/parser.ml" + : (Parsetree.value_description * string Asttypes.loc option)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v = + let _1 = +# 4140 "parsing/parser.mly" + ( Public ) +# 43194 "parsing/parser.ml" + in + ( +# 4137 "parsing/parser.mly" + ( _1 ) +# 43199 "parsing/parser.ml" + : (Asttypes.private_flag)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36913,27 +43208,45 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Longident.t) = -# 1375 "parsing/parser.mly" + let _endpos = _endpos__1_ in + let _v = + let _1 = +# 4141 "parsing/parser.mly" + ( Private ) +# 43226 "parsing/parser.ml" + in + ( +# 4137 "parsing/parser.mly" ( _1 ) -# 36937 "parsing/parser.ml" +# 43231 "parsing/parser.ml" + : (Asttypes.private_flag)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = +# 4163 "parsing/parser.mly" + ( Public, Concrete ) +# 43250 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36945,27 +43258,20 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Longident.t) = -# 1360 "parsing/parser.mly" - ( _1 ) -# 36969 "parsing/parser.ml" + let _endpos = _endpos__1_ in + let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = +# 4164 "parsing/parser.mly" + ( Private, Concrete ) +# 43275 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36977,27 +43283,20 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.core_type) = Obj.magic _1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.core_type) = -# 1335 "parsing/parser.mly" - ( _1 ) -# 37001 "parsing/parser.ml" + let _endpos = _endpos__1_ in + let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = +# 4165 "parsing/parser.mly" + ( Public, Virtual ) +# 43300 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37022,14 +43321,14 @@ module Tables = struct }; } = _menhir_stack in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.expression) = Obj.magic _1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in - let _v : (Parsetree.expression) = -# 1340 "parsing/parser.mly" - ( _1 ) -# 37033 "parsing/parser.ml" + let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = +# 4166 "parsing/parser.mly" + ( Private, Virtual ) +# 43332 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37054,14 +43353,32 @@ module Tables = struct }; } = _menhir_stack in let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in - let _v : (Longident.t) = -# 1365 "parsing/parser.mly" - ( _1 ) -# 37065 "parsing/parser.ml" + let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = +# 4167 "parsing/parser.mly" + ( Private, Virtual ) +# 43364 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Asttypes.rec_flag) = +# 4118 "parsing/parser.mly" + ( Nonrecursive ) +# 43382 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37073,27 +43390,20 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Longident.t) = -# 1370 "parsing/parser.mly" - ( _1 ) -# 37097 "parsing/parser.ml" + let _endpos = _endpos__1_ in + let _v : (Asttypes.rec_flag) = +# 4119 "parsing/parser.mly" + ( Recursive ) +# 43407 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37102,31 +43412,86 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = fields; + MenhirLib.EngineTypes.startp = _startpos_fields_; + MenhirLib.EngineTypes.endp = _endpos_fields_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let fields : ((Longident.t Asttypes.loc * Parsetree.expression) list) = Obj.magic fields in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_fields_ in + let _endpos = _endpos_fields_ in + let _v = + let eo = +# 123 "" + ( None ) +# 43433 "parsing/parser.ml" + in + ( +# 2898 "parsing/parser.mly" + ( eo, fields ) +# 43438 "parsing/parser.ml" + : (Parsetree.expression option * + (Longident.t Asttypes.loc * Parsetree.expression) list)) + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = fields; + MenhirLib.EngineTypes.startp = _startpos_fields_; + MenhirLib.EngineTypes.endp = _endpos_fields_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in + let fields : ((Longident.t Asttypes.loc * Parsetree.expression) list) = Obj.magic fields in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.module_expr) = Obj.magic _1 in + let x : (Parsetree.expression) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.module_expr) = -# 1330 "parsing/parser.mly" - ( _1 ) -# 37129 "parsing/parser.ml" - in + let _startpos = _startpos_x_ in + let _endpos = _endpos_fields_ in + let _v = + let eo = + let x = +# 196 "" + ( x ) +# 43481 "parsing/parser.ml" + in + +# 126 "" + ( Some x ) +# 43486 "parsing/parser.ml" + + in + ( +# 2898 "parsing/parser.mly" + ( eo, fields ) +# 43492 "parsing/parser.ml" + : (Parsetree.expression option * + (Longident.t Asttypes.loc * Parsetree.expression) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -37137,28 +43502,33 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = d; + MenhirLib.EngineTypes.startp = _startpos_d_; + MenhirLib.EngineTypes.endp = _endpos_d_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.module_type) = Obj.magic _1 in + let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * + Parsetree.core_type option * Parsetree.attributes * Location.t * + Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.module_type) = -# 1325 "parsing/parser.mly" - ( _1 ) -# 37161 "parsing/parser.ml" - in + let _startpos = _startpos_d_ in + let _endpos = _endpos_d_ in + let _v = + let x = +# 3410 "parsing/parser.mly" + ( + let cid, vars, args, res, attrs, loc, info = d in + Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info + ) +# 43525 "parsing/parser.ml" + in + ( +# 1205 "parsing/parser.mly" + ( [x] ) +# 43530 "parsing/parser.ml" + : (Parsetree.constructor_declaration list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -37169,28 +43539,33 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = d; + MenhirLib.EngineTypes.startp = _startpos_d_; + MenhirLib.EngineTypes.endp = _endpos_d_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * + Parsetree.core_type option * Parsetree.attributes * Location.t * + Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Longident.t) = -# 1350 "parsing/parser.mly" - ( _1 ) -# 37193 "parsing/parser.ml" - in + let _startpos = _startpos_d_ in + let _endpos = _endpos_d_ in + let _v = + let x = +# 3410 "parsing/parser.mly" + ( + let cid, vars, args, res, attrs, loc, info = d in + Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info + ) +# 43562 "parsing/parser.ml" + in + ( +# 1208 "parsing/parser.mly" + ( [x] ) +# 43567 "parsing/parser.ml" + : (Parsetree.constructor_declaration list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -37202,27 +43577,39 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = d; + MenhirLib.EngineTypes.startp = _startpos_d_; + MenhirLib.EngineTypes.endp = _endpos_d_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * + Parsetree.core_type option * Parsetree.attributes * Location.t * + Docstrings.info) = Obj.magic d in + let xs : (Parsetree.constructor_declaration list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.pattern) = -# 1345 "parsing/parser.mly" - ( _1 ) -# 37225 "parsing/parser.ml" - in + let _startpos = _startpos_xs_ in + let _endpos = _endpos_d_ in + let _v = + let x = +# 3410 "parsing/parser.mly" + ( + let cid, vars, args, res, attrs, loc, info = d in + Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info + ) +# 43606 "parsing/parser.ml" + in + ( +# 1212 "parsing/parser.mly" + ( x :: xs ) +# 43611 "parsing/parser.ml" + : (Parsetree.constructor_declaration list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -37233,28 +43620,40 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = d; + MenhirLib.EngineTypes.startp = _startpos_d_; + MenhirLib.EngineTypes.endp = _endpos_d_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * + Parsetree.core_type option * Parsetree.attributes * Location.t * + Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Longident.t) = -# 1355 "parsing/parser.mly" - ( _1 ) -# 37257 "parsing/parser.ml" - in + let _startpos = _startpos_d_ in + let _endpos = _endpos_d_ in + let _v = + let x = + let _1 = +# 3528 "parsing/parser.mly" + ( + let cid, vars, args, res, attrs, loc, info = d in + Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + ) +# 43644 "parsing/parser.ml" + in + +# 3522 "parsing/parser.mly" + ( _1 ) +# 43649 "parsing/parser.ml" + + in + ( +# 1205 "parsing/parser.mly" + ( [x] ) +# 43655 "parsing/parser.ml" + : (Parsetree.extension_constructor list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -37265,47 +43664,27 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _3 : (Parsetree.pattern) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _1 : (Parsetree.extension_constructor) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _endpos = _endpos__1_ in let _v = - let _1 = - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _loc__2_ = (_startpos__2_, _endpos__2_) in - let _sloc = (_symbolstartpos, _endpos) in - -# 2920 "parsing/parser.mly" - ( mkpat_cons ~loc:_sloc _loc__2_ (ghpat ~loc:_sloc (Ppat_tuple[_1;_3])) ) -# 37302 "parsing/parser.ml" - - in - ( -# 2906 "parsing/parser.mly" + let x = +# 3524 "parsing/parser.mly" ( _1 ) -# 37308 "parsing/parser.ml" - : (Parsetree.pattern)) +# 43682 "parsing/parser.ml" + in + ( +# 1205 "parsing/parser.mly" + ( [x] ) +# 43687 "parsing/parser.ml" + : (Parsetree.extension_constructor list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37317,34 +43696,39 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = d; + MenhirLib.EngineTypes.startp = _startpos_d_; + MenhirLib.EngineTypes.endp = _endpos_d_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _2 : (Parsetree.attribute) = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * + Parsetree.core_type option * Parsetree.attributes * Location.t * + Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in + let _startpos = _startpos_d_ in + let _endpos = _endpos_d_ in let _v = - let _1 = -# 2922 "parsing/parser.mly" - ( Pat.attr _1 _2 ) -# 37342 "parsing/parser.ml" - in - ( -# 2906 "parsing/parser.mly" + let x = + let _1 = +# 3528 "parsing/parser.mly" + ( + let cid, vars, args, res, attrs, loc, info = d in + Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + ) +# 43720 "parsing/parser.ml" + in + +# 3522 "parsing/parser.mly" ( _1 ) -# 37347 "parsing/parser.ml" - : (Parsetree.pattern)) +# 43725 "parsing/parser.ml" + + in + ( +# 1208 "parsing/parser.mly" + ( [x] ) +# 43731 "parsing/parser.ml" + : (Parsetree.extension_constructor list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37362,21 +43746,21 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _1 : (Parsetree.extension_constructor) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v = - let _1 = -# 2924 "parsing/parser.mly" + let x = +# 3524 "parsing/parser.mly" ( _1 ) -# 37374 "parsing/parser.ml" +# 43758 "parsing/parser.ml" in ( -# 2906 "parsing/parser.mly" - ( _1 ) -# 37379 "parsing/parser.ml" - : (Parsetree.pattern)) +# 1208 "parsing/parser.mly" + ( [x] ) +# 43763 "parsing/parser.ml" + : (Parsetree.extension_constructor list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37389,71 +43773,45 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = d; + MenhirLib.EngineTypes.startp = _startpos_d_; + MenhirLib.EngineTypes.endp = _endpos_d_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * + Parsetree.core_type option * Parsetree.attributes * Location.t * + Docstrings.info) = Obj.magic d in + let xs : (Parsetree.extension_constructor list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined1_ in + let _startpos = _startpos_xs_ in + let _endpos = _endpos_d_ in let _v = - let _1 = - let _1 = - let _1 = - let _3 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 37428 "parsing/parser.ml" - - in - -# 2927 "parsing/parser.mly" - ( Ppat_alias(_1, _3) ) -# 37434 "parsing/parser.ml" - - in - let _endpos__1_ = _endpos__1_inlined1_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 37444 "parsing/parser.ml" - - in + let x = + let _1 = +# 3528 "parsing/parser.mly" + ( + let cid, vars, args, res, attrs, loc, info = d in + Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + ) +# 43803 "parsing/parser.ml" + in -# 2938 "parsing/parser.mly" - ( _1 ) -# 37450 "parsing/parser.ml" +# 3522 "parsing/parser.mly" + ( _1 ) +# 43808 "parsing/parser.ml" in ( -# 2906 "parsing/parser.mly" - ( _1 ) -# 37456 "parsing/parser.ml" - : (Parsetree.pattern)) +# 1212 "parsing/parser.mly" + ( x :: xs ) +# 43814 "parsing/parser.ml" + : (Parsetree.extension_constructor list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37466,61 +43824,33 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _1 : (Parsetree.extension_constructor) = Obj.magic _1 in + let xs : (Parsetree.extension_constructor list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _startpos = _startpos_xs_ in + let _endpos = _endpos__1_ in let _v = - let _1 = - let _1 = - let _1 = - let _loc__3_ = (_startpos__3_, _endpos__3_) in - -# 2929 "parsing/parser.mly" - ( expecting _loc__3_ "identifier" ) -# 37501 "parsing/parser.ml" - - in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 37511 "parsing/parser.ml" - - in - -# 2938 "parsing/parser.mly" - ( _1 ) -# 37517 "parsing/parser.ml" - - in - ( -# 2906 "parsing/parser.mly" + let x = +# 3524 "parsing/parser.mly" ( _1 ) -# 37523 "parsing/parser.ml" - : (Parsetree.pattern)) +# 43848 "parsing/parser.ml" + in + ( +# 1212 "parsing/parser.mly" + ( x :: xs ) +# 43853 "parsing/parser.ml" + : (Parsetree.extension_constructor list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37533,43 +43863,31 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = d; + MenhirLib.EngineTypes.startp = _startpos_d_; + MenhirLib.EngineTypes.endp = _endpos_d_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : (Parsetree.pattern list) = Obj.magic _1 in + let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * + Parsetree.core_type option * Parsetree.attributes * Location.t * + Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _startpos = _startpos_d_ in + let _endpos = _endpos_d_ in let _v = - let _1 = - let _1 = - let _1 = -# 2931 "parsing/parser.mly" - ( Ppat_tuple(List.rev _1) ) -# 37552 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 37560 "parsing/parser.ml" - - in - -# 2938 "parsing/parser.mly" - ( _1 ) -# 37566 "parsing/parser.ml" - - in + let x = +# 3528 "parsing/parser.mly" + ( + let cid, vars, args, res, attrs, loc, info = d in + Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + ) +# 43885 "parsing/parser.ml" + in ( -# 2906 "parsing/parser.mly" - ( _1 ) -# 37572 "parsing/parser.ml" - : (Parsetree.pattern)) +# 1205 "parsing/parser.mly" + ( [x] ) +# 43890 "parsing/parser.ml" + : (Parsetree.extension_constructor list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37581,62 +43899,32 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = d; + MenhirLib.EngineTypes.startp = _startpos_d_; + MenhirLib.EngineTypes.endp = _endpos_d_; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v = - let _1 = - let _1 = - let _1 = - let _loc__3_ = (_startpos__3_, _endpos__3_) in - -# 2933 "parsing/parser.mly" - ( expecting _loc__3_ "pattern" ) -# 37617 "parsing/parser.ml" - - in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 37627 "parsing/parser.ml" - - in - -# 2938 "parsing/parser.mly" - ( _1 ) -# 37633 "parsing/parser.ml" - - in + let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * + Parsetree.core_type option * Parsetree.attributes * Location.t * + Docstrings.info) = Obj.magic d in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_d_ in + let _endpos = _endpos_d_ in + let _v = + let x = +# 3528 "parsing/parser.mly" + ( + let cid, vars, args, res, attrs, loc, info = d in + Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + ) +# 43922 "parsing/parser.ml" + in ( -# 2906 "parsing/parser.mly" - ( _1 ) -# 37639 "parsing/parser.ml" - : (Parsetree.pattern)) +# 1208 "parsing/parser.mly" + ( [x] ) +# 43927 "parsing/parser.ml" + : (Parsetree.extension_constructor list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37649,58 +43937,38 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = d; + MenhirLib.EngineTypes.startp = _startpos_d_; + MenhirLib.EngineTypes.endp = _endpos_d_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _3 : (Parsetree.pattern) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * + Parsetree.core_type option * Parsetree.attributes * Location.t * + Docstrings.info) = Obj.magic d in + let xs : (Parsetree.extension_constructor list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _startpos = _startpos_xs_ in + let _endpos = _endpos_d_ in let _v = - let _1 = - let _1 = - let _1 = -# 2935 "parsing/parser.mly" - ( Ppat_or(_1, _3) ) -# 37682 "parsing/parser.ml" - in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 37691 "parsing/parser.ml" - - in - -# 2938 "parsing/parser.mly" - ( _1 ) -# 37697 "parsing/parser.ml" - - in + let x = +# 3528 "parsing/parser.mly" + ( + let cid, vars, args, res, attrs, loc, info = d in + Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + ) +# 43966 "parsing/parser.ml" + in ( -# 2906 "parsing/parser.mly" - ( _1 ) -# 37703 "parsing/parser.ml" - : (Parsetree.pattern)) +# 1212 "parsing/parser.mly" + ( x :: xs ) +# 43971 "parsing/parser.ml" + : (Parsetree.extension_constructor list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37713,9 +43981,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -37723,51 +43991,44 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in + let _1 : (Parsetree.expression) = Obj.magic _1 in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let xs : ((string option * Parsetree.expression) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _startpos = _startpos_xs_ in + let _endpos = _endpos__1_ in let _v = - let _1 = + let x = let _1 = - let _1 = - let _loc__3_ = (_startpos__3_, _endpos__3_) in - -# 2937 "parsing/parser.mly" - ( expecting _loc__3_ "pattern" ) -# 37748 "parsing/parser.ml" - - in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 44014 "parsing/parser.ml" + in -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 37758 "parsing/parser.ml" +# 2440 "parsing/parser.mly" + ( _1 ) +# 44019 "parsing/parser.ml" in -# 2938 "parsing/parser.mly" - ( _1 ) -# 37764 "parsing/parser.ml" +# 2851 "parsing/parser.mly" + ( None, _1 ) +# 44025 "parsing/parser.ml" in ( -# 2906 "parsing/parser.mly" - ( _1 ) -# 37770 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2867 "parsing/parser.mly" + ( x :: xs ) +# 44031 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37780,9 +44041,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = xs_inlined1; + MenhirLib.EngineTypes.startp = _startpos_xs_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_xs_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined2; @@ -37794,47 +44055,114 @@ module Tables = struct MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1; MenhirLib.EngineTypes.startp = _startpos__1_; MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; }; }; }; } = _menhir_stack in - let _3 : (Parsetree.pattern) = Obj.magic _3 in + let xs_inlined1 : (Parsetree.case list) = Obj.magic xs_inlined1 in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in + let _2 : unit = Obj.magic _2 in + let xs : ((string option * Parsetree.expression) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _startpos = _startpos_xs_ in + let _endpos = _endpos_xs_inlined1_ in let _v = - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" + let x = + let (_endpos_xs_, xs) = (_endpos_xs_inlined1_, xs_inlined1) in + let _1 = + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 44099 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 44104 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 44110 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" ( _1 ) -# 37822 "parsing/parser.ml" +# 44121 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 44127 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 44147 "parsing/parser.ml" + + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 44153 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 37828 "parsing/parser.ml" +# 2851 "parsing/parser.mly" + ( None, _1 ) +# 44159 "parsing/parser.ml" in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 2908 "parsing/parser.mly" - ( mkpat_attrs ~loc:_sloc (Ppat_exception _3) _2) -# 37837 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2867 "parsing/parser.mly" + ( x :: xs ) +# 44165 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37847,14 +44175,14 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -37862,30 +44190,39 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; } = _menhir_stack in - let _4 : (Parsetree.pattern) = Obj.magic _4 in - let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.pattern) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in + let _2_inlined1 : (Parsetree.expression) = Obj.magic _2_inlined1 in + let _1 : ( +# 772 "parsing/parser.mly" + (string) +# 44206 "parsing/parser.ml" + ) = Obj.magic _1 in + let _2 : unit = Obj.magic _2 in + let xs : ((string option * Parsetree.expression) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in + let _startpos = _startpos_xs_ in + let _endpos = _endpos__2_inlined1_ in let _v = - let _endpos = _endpos__4_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let x = + let _2 = _2_inlined1 in + +# 2853 "parsing/parser.mly" + ( Some _1, _2 ) +# 44219 "parsing/parser.ml" + + in ( -# 2910 "parsing/parser.mly" - ( mkpat ~loc:_sloc (Ppat_effect(_2,_4)) ) -# 37888 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2867 "parsing/parser.mly" + ( x :: xs ) +# 44225 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37898,34 +44235,56 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; } = _menhir_stack in - let _3 : (Parsetree.pattern) = Obj.magic _3 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 44265 "parsing/parser.ml" + ) = Obj.magic label in + let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern list) = Obj.magic _1 in + let xs : ((string option * Parsetree.expression) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Parsetree.pattern list) = -# 3038 "parsing/parser.mly" - ( _3 :: _1 ) -# 37928 "parsing/parser.ml" - in + let _startpos = _startpos_xs_ in + let _endpos = _endpos_label_ in + let _v = + let x = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 2855 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkexpvar ~loc label ) +# 44280 "parsing/parser.ml" + + in + ( +# 2867 "parsing/parser.mly" + ( x :: xs ) +# 44286 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -37937,34 +44296,80 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = c; + MenhirLib.EngineTypes.startp = _startpos_c_; + MenhirLib.EngineTypes.endp = _endpos_c_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; }; }; } = _menhir_stack in - let _3 : (Parsetree.pattern) = Obj.magic _3 in + let _5 : unit = Obj.magic _5 in + let c : (Parsetree.type_constraint) = Obj.magic c in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 44346 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let xs : ((string option * Parsetree.expression) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Parsetree.pattern list) = -# 3039 "parsing/parser.mly" - ( [_3; _1] ) -# 37967 "parsing/parser.ml" - in + let _startpos = _startpos_xs_ in + let _endpos = _endpos__5_ in + let _v = + let x = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__5_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 2858 "parsing/parser.mly" + ( Some label, + mkexp_constraint ~loc:(_startpos__2_, _endpos) + (mkexpvar ~loc:_loc_label_ label) c ) +# 44365 "parsing/parser.ml" + + in + ( +# 2867 "parsing/parser.mly" + ( x :: xs ) +# 44371 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -37976,9 +44381,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -37993,19 +44398,50 @@ module Tables = struct }; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in + let _1_inlined1 : (Parsetree.expression) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _endpos = _endpos__1_inlined1_ in let _v = - let _loc__3_ = (_startpos__3_, _endpos__3_) in + let x2 = + let _1 = _1_inlined1 in + let _1 = + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 44415 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 44420 "parsing/parser.ml" + + in + +# 2851 "parsing/parser.mly" + ( None, _1 ) +# 44426 "parsing/parser.ml" + + in + let x1 = + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 44433 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 44438 "parsing/parser.ml" + + in ( -# 3040 "parsing/parser.mly" - ( expecting _loc__3_ "pattern" ) -# 38008 "parsing/parser.ml" - : (Parsetree.pattern list)) +# 2872 "parsing/parser.mly" + ( [ x2; None, x1 ] ) +# 44444 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38018,34 +44454,141 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; }; } = _menhir_stack in - let _3 : (Parsetree.pattern) = Obj.magic _3 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let _1_inlined2 : (string Asttypes.loc option) = Obj.magic _1_inlined2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern list) = Obj.magic _1 in + let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Parsetree.pattern list) = -# 3038 "parsing/parser.mly" - ( _3 :: _1 ) -# 38048 "parsing/parser.ml" - in + let _endpos = _endpos_xs_ in + let _v = + let x2 = + let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined1_, _1_inlined3, _1_inlined2) in + let _1 = + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 44512 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 44517 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 44523 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 44534 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 44540 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 44560 "parsing/parser.ml" + + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 44566 "parsing/parser.ml" + + in + +# 2851 "parsing/parser.mly" + ( None, _1 ) +# 44572 "parsing/parser.ml" + + in + let x1 = + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 44579 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 44584 "parsing/parser.ml" + + in + ( +# 2872 "parsing/parser.mly" + ( [ x2; None, x1 ] ) +# 44590 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -38057,34 +44600,67 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; } = _menhir_stack in - let _3 : (Parsetree.pattern) = Obj.magic _3 in + let _2_inlined1 : (Parsetree.expression) = Obj.magic _2_inlined1 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" + (string) +# 44631 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in - let _v : (Parsetree.pattern list) = -# 3039 "parsing/parser.mly" - ( [_3; _1] ) -# 38087 "parsing/parser.ml" - in + let _endpos = _endpos__2_inlined1_ in + let _v = + let x2 = + let (_2, _1) = (_2_inlined1, _1_inlined1) in + +# 2853 "parsing/parser.mly" + ( Some _1, _2 ) +# 44644 "parsing/parser.ml" + + in + let x1 = + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 44651 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 44656 "parsing/parser.ml" + + in + ( +# 2872 "parsing/parser.mly" + ( [ x2; None, x1 ] ) +# 44662 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -38096,36 +44672,67 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 44702 "parsing/parser.ml" + ) = Obj.magic label in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _endpos = _endpos_label_ in let _v = - let _loc__3_ = (_startpos__3_, _endpos__3_) in + let x2 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 2855 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkexpvar ~loc label ) +# 44717 "parsing/parser.ml" + + in + let x1 = + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 44724 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 44729 "parsing/parser.ml" + + in ( -# 3040 "parsing/parser.mly" - ( expecting _loc__3_ "pattern" ) -# 38128 "parsing/parser.ml" - : (Parsetree.pattern list)) +# 2872 "parsing/parser.mly" + ( [ x2; None, x1 ] ) +# 44735 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38134,85 +44741,95 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Parsetree.pattern) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Parsetree.pattern) = -# 2943 "parsing/parser.mly" - ( _1 ) -# 38154 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = c; + MenhirLib.EngineTypes.startp = _startpos_c_; + MenhirLib.EngineTypes.endp = _endpos_c_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; }; } = _menhir_stack in - let _2 : (Parsetree.pattern) = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let _5 : unit = Obj.magic _5 in + let c : (Parsetree.type_constraint) = Obj.magic c in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 44795 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in + let _endpos = _endpos__5_ in let _v = - let _1 = - let _1 = - let _1 = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 38193 "parsing/parser.ml" - - in - -# 2946 "parsing/parser.mly" - ( Ppat_construct(_1, Some ([], _2)) ) -# 38199 "parsing/parser.ml" - - in - let _endpos__1_ = _endpos__2_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let x2 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__5_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 38209 "parsing/parser.ml" +# 2858 "parsing/parser.mly" + ( Some label, + mkexp_constraint ~loc:(_startpos__2_, _endpos) + (mkexpvar ~loc:_loc_label_ label) c ) +# 44814 "parsing/parser.ml" in - ( -# 2952 "parsing/parser.mly" + let x1 = + let _1 = +# 2297 "parsing/parser.mly" ( _1 ) -# 38215 "parsing/parser.ml" - : (Parsetree.pattern)) +# 44821 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 44826 "parsing/parser.ml" + + in + ( +# 2872 "parsing/parser.mly" + ( [ x2; None, x1 ] ) +# 44832 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38225,14 +44842,14 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = pat; - MenhirLib.EngineTypes.startp = _startpos_pat_; - MenhirLib.EngineTypes.endp = _endpos_pat_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = xs; @@ -38240,14 +44857,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -38260,54 +44877,105 @@ module Tables = struct }; }; } = _menhir_stack in - let pat : (Parsetree.pattern) = Obj.magic pat in - let _5 : unit = Obj.magic _5 in - let xs : (string Asttypes.loc list) = Obj.magic xs in - let _3 : unit = Obj.magic _3 in + let _1_inlined3 : (Parsetree.expression) = Obj.magic _1_inlined3 in let _2 : unit = Obj.magic _2 in - let _1 : (Longident.t) = Obj.magic _1 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_pat_ in + let _endpos = _endpos__1_inlined3_ in let _v = - let _1 = + let x2 = + let _1 = _1_inlined3 in let _1 = - let newtypes = -# 2679 "parsing/parser.mly" - ( xs ) -# 38279 "parsing/parser.ml" + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 44897 "parsing/parser.ml" in - let constr = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 44902 "parsing/parser.ml" + + in + +# 2851 "parsing/parser.mly" + ( None, _1 ) +# 44908 "parsing/parser.ml" + + in + let x1 = + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 44918 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 44923 "parsing/parser.ml" + + in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 38288 "parsing/parser.ml" +# 2783 "parsing/parser.mly" + ( xs ) +# 44929 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 44940 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 44946 "parsing/parser.ml" in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 2949 "parsing/parser.mly" - ( Ppat_construct(constr, Some (newtypes, pat)) ) -# 38294 "parsing/parser.ml" +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 44966 "parsing/parser.ml" in - let _endpos__1_ = _endpos_pat_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 38304 "parsing/parser.ml" +# 2440 "parsing/parser.mly" + ( _1 ) +# 44972 "parsing/parser.ml" in ( -# 2952 "parsing/parser.mly" - ( _1 ) -# 38310 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2872 "parsing/parser.mly" + ( [ x2; None, x1 ] ) +# 44978 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38320,44 +44988,213 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = xs_inlined1; + MenhirLib.EngineTypes.startp = _startpos_xs_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_xs_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined5; + MenhirLib.EngineTypes.startp = _startpos__1_inlined5_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined4; + MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; }; } = _menhir_stack in - let _2 : (Parsetree.pattern) = Obj.magic _2 in - let _1 : (Asttypes.label) = Obj.magic _1 in + let xs_inlined1 : (Parsetree.case list) = Obj.magic xs_inlined1 in + let _1_inlined5 : (Parsetree.attributes) = Obj.magic _1_inlined5 in + let _1_inlined4 : (string Asttypes.loc option) = Obj.magic _1_inlined4 in + let _1_inlined3 : unit = Obj.magic _1_inlined3 in + let _2 : unit = Obj.magic _2 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in + let _endpos = _endpos_xs_inlined1_ in let _v = - let _1 = - let _1 = -# 2951 "parsing/parser.mly" - ( Ppat_variant(_1, Some _2) ) -# 38345 "parsing/parser.ml" - in - let _endpos__1_ = _endpos__2_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let x2 = + let (_endpos_xs_, _startpos__1_, xs, _1_inlined2, _1_inlined1) = (_endpos_xs_inlined1_, _startpos__1_inlined3_, xs_inlined1, _1_inlined5, _1_inlined4) in + let _1 = + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 45067 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 45072 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 45078 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 45089 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 45095 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 45115 "parsing/parser.ml" + + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 45121 "parsing/parser.ml" + + in + +# 2851 "parsing/parser.mly" + ( None, _1 ) +# 45127 "parsing/parser.ml" + + in + let x1 = + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 45137 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 45142 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 45148 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 45159 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 45165 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 45185 "parsing/parser.ml" + + in -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 38354 "parsing/parser.ml" +# 2440 "parsing/parser.mly" + ( _1 ) +# 45191 "parsing/parser.ml" in ( -# 2952 "parsing/parser.mly" - ( _1 ) -# 38360 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2872 "parsing/parser.mly" + ( [ x2; None, x1 ] ) +# 45197 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38370,61 +45207,139 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; }; }; } = _menhir_stack in - let _3 : (Parsetree.pattern) = Obj.magic _3 in + let _2_inlined1 : (Parsetree.expression) = Obj.magic _2_inlined1 in + let _1_inlined3 : ( +# 772 "parsing/parser.mly" + (string) +# 45256 "parsing/parser.ml" + ) = Obj.magic _1_inlined3 in + let _2 : unit = Obj.magic _2 in + let xs : (Parsetree.case list) = Obj.magic xs in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _endpos = _endpos__2_inlined1_ in let _v = - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" + let x2 = + let (_2, _1) = (_2_inlined1, _1_inlined3) in + +# 2853 "parsing/parser.mly" + ( Some _1, _2 ) +# 45272 "parsing/parser.ml" + + in + let x1 = + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 45282 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 45287 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 45293 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" ( _1 ) -# 38412 "parsing/parser.ml" +# 45304 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 45310 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 45330 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 38418 "parsing/parser.ml" +# 2440 "parsing/parser.mly" + ( _1 ) +# 45336 "parsing/parser.ml" in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in ( -# 2954 "parsing/parser.mly" - ( mkpat_attrs ~loc:_sloc (Ppat_lazy _3) _2) -# 38427 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2872 "parsing/parser.mly" + ( [ x2; None, x1 ] ) +# 45342 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38437,194 +45352,140 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; }; }; } = _menhir_stack in - let _3 : (Parsetree.pattern) = Obj.magic _3 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 45400 "parsing/parser.ml" + ) = Obj.magic label in + let _1_inlined3 : unit = Obj.magic _1_inlined3 in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _endpos = _endpos_label_ in let _v = - let _1 = - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _loc__2_ = (_startpos__2_, _endpos__2_) in - let _sloc = (_symbolstartpos, _endpos) in + let x2 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2920 "parsing/parser.mly" - ( mkpat_cons ~loc:_sloc _loc__2_ (ghpat ~loc:_sloc (Ppat_tuple[_1;_3])) ) -# 38473 "parsing/parser.ml" +# 2855 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkexpvar ~loc label ) +# 45418 "parsing/parser.ml" in - ( -# 2915 "parsing/parser.mly" - ( _1 ) -# 38479 "parsing/parser.ml" - : (Parsetree.pattern)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let _2 : (Parsetree.attribute) = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v = - let _1 = -# 2922 "parsing/parser.mly" - ( Pat.attr _1 _2 ) -# 38513 "parsing/parser.ml" - in - ( -# 2915 "parsing/parser.mly" - ( _1 ) -# 38518 "parsing/parser.ml" - : (Parsetree.pattern)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Parsetree.pattern) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _1 = -# 2924 "parsing/parser.mly" - ( _1 ) -# 38545 "parsing/parser.ml" - in - ( -# 2915 "parsing/parser.mly" - ( _1 ) -# 38550 "parsing/parser.ml" - : (Parsetree.pattern)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined1_ in - let _v = - let _1 = + let x1 = let _1 = - let _1 = - let _3 = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 45428 "parsing/parser.ml" + in -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 38599 "parsing/parser.ml" +# 1188 "parsing/parser.mly" + ( xs ) +# 45433 "parsing/parser.ml" in -# 2927 "parsing/parser.mly" - ( Ppat_alias(_1, _3) ) -# 38605 "parsing/parser.ml" +# 2783 "parsing/parser.mly" + ( xs ) +# 45439 "parsing/parser.ml" in - let _endpos__1_ = _endpos__1_inlined1_ in - let _endpos = _endpos__1_ in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 45450 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 45456 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 38615 "parsing/parser.ml" +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 45476 "parsing/parser.ml" in -# 2938 "parsing/parser.mly" - ( _1 ) -# 38621 "parsing/parser.ml" +# 2440 "parsing/parser.mly" + ( _1 ) +# 45482 "parsing/parser.ml" in ( -# 2915 "parsing/parser.mly" - ( _1 ) -# 38627 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2872 "parsing/parser.mly" + ( [ x2; None, x1 ] ) +# 45488 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38637,61 +45498,164 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = c; + MenhirLib.EngineTypes.startp = _startpos_c_; + MenhirLib.EngineTypes.endp = _endpos_c_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; }; }; } = _menhir_stack in - let _3 : unit = Obj.magic _3 in + let _5 : unit = Obj.magic _5 in + let c : (Parsetree.type_constraint) = Obj.magic c in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 45566 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined3 : unit = Obj.magic _1_inlined3 in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _endpos = _endpos__5_ in let _v = - let _1 = + let x2 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__5_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 2858 "parsing/parser.mly" + ( Some label, + mkexp_constraint ~loc:(_startpos__2_, _endpos) + (mkexpvar ~loc:_loc_label_ label) c ) +# 45588 "parsing/parser.ml" + + in + let x1 = let _1 = - let _1 = - let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 45598 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 45603 "parsing/parser.ml" + + in -# 2929 "parsing/parser.mly" - ( expecting _loc__3_ "identifier" ) -# 38672 "parsing/parser.ml" +# 2783 "parsing/parser.mly" + ( xs ) +# 45609 "parsing/parser.ml" in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 45620 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 45626 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 38682 "parsing/parser.ml" +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 45646 "parsing/parser.ml" in -# 2938 "parsing/parser.mly" - ( _1 ) -# 38688 "parsing/parser.ml" +# 2440 "parsing/parser.mly" + ( _1 ) +# 45652 "parsing/parser.ml" in ( -# 2915 "parsing/parser.mly" - ( _1 ) -# 38694 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2872 "parsing/parser.mly" + ( [ x2; None, x1 ] ) +# 45658 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38703,44 +45667,66 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1; MenhirLib.EngineTypes.startp = _startpos__1_; MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x1; + MenhirLib.EngineTypes.startp = _startpos_x1_; + MenhirLib.EngineTypes.endp = _endpos_x1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; } = _menhir_stack in - let _1 : (Parsetree.pattern list) = Obj.magic _1 in + let _1 : (Parsetree.expression) = Obj.magic _1 in + let _3 : unit = Obj.magic _3 in + let x1 : (Parsetree.expression) = Obj.magic x1 in + let l1 : ( +# 772 "parsing/parser.mly" + (string) +# 45701 "parsing/parser.ml" + ) = Obj.magic l1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in + let _startpos = _startpos_l1_ in let _endpos = _endpos__1_ in let _v = - let _1 = + let x2 = let _1 = let _1 = -# 2931 "parsing/parser.mly" - ( Ppat_tuple(List.rev _1) ) -# 38723 "parsing/parser.ml" +# 2297 "parsing/parser.mly" + ( _1 ) +# 45712 "parsing/parser.ml" in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 38731 "parsing/parser.ml" +# 2440 "parsing/parser.mly" + ( _1 ) +# 45717 "parsing/parser.ml" in -# 2938 "parsing/parser.mly" - ( _1 ) -# 38737 "parsing/parser.ml" +# 2851 "parsing/parser.mly" + ( None, _1 ) +# 45723 "parsing/parser.ml" in ( -# 2915 "parsing/parser.mly" - ( _1 ) -# 38743 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2876 "parsing/parser.mly" + ( [ x2; Some l1, x1 ] ) +# 45729 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38753,61 +45739,138 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x1; + MenhirLib.EngineTypes.startp = _startpos_x1_; + MenhirLib.EngineTypes.endp = _endpos_x1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; }; }; } = _menhir_stack in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _3 : unit = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let x1 : (Parsetree.expression) = Obj.magic x1 in + let l1 : ( +# 772 "parsing/parser.mly" + (string) +# 45793 "parsing/parser.ml" + ) = Obj.magic l1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _startpos = _startpos_l1_ in + let _endpos = _endpos_xs_ in let _v = - let _1 = + let x2 = let _1 = let _1 = - let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 45807 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 45812 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 45818 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 45829 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 45835 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 2933 "parsing/parser.mly" - ( expecting _loc__3_ "pattern" ) -# 38788 "parsing/parser.ml" +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 45855 "parsing/parser.ml" in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 38798 "parsing/parser.ml" +# 2440 "parsing/parser.mly" + ( _1 ) +# 45861 "parsing/parser.ml" in -# 2938 "parsing/parser.mly" - ( _1 ) -# 38804 "parsing/parser.ml" +# 2851 "parsing/parser.mly" + ( None, _1 ) +# 45867 "parsing/parser.ml" in ( -# 2915 "parsing/parser.mly" - ( _1 ) -# 38810 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2876 "parsing/parser.mly" + ( [ x2; Some l1, x1 ] ) +# 45873 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38820,58 +45883,62 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x1; + MenhirLib.EngineTypes.startp = _startpos_x1_; + MenhirLib.EngineTypes.endp = _endpos_x1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; }; }; } = _menhir_stack in - let _3 : (Parsetree.pattern) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let _2 : (Parsetree.expression) = Obj.magic _2 in + let _1 : ( +# 772 "parsing/parser.mly" + (string) +# 45920 "parsing/parser.ml" + ) = Obj.magic _1 in + let _3 : unit = Obj.magic _3 in + let x1 : (Parsetree.expression) = Obj.magic x1 in + let l1 : ( +# 772 "parsing/parser.mly" + (string) +# 45927 "parsing/parser.ml" + ) = Obj.magic l1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _startpos = _startpos_l1_ in + let _endpos = _endpos__2_ in let _v = - let _1 = - let _1 = - let _1 = -# 2935 "parsing/parser.mly" - ( Ppat_or(_1, _3) ) -# 38853 "parsing/parser.ml" - in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 38862 "parsing/parser.ml" - - in - -# 2938 "parsing/parser.mly" - ( _1 ) -# 38868 "parsing/parser.ml" - - in + let x2 = +# 2853 "parsing/parser.mly" + ( Some _1, _2 ) +# 45936 "parsing/parser.ml" + in ( -# 2915 "parsing/parser.mly" - ( _1 ) -# 38874 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2876 "parsing/parser.mly" + ( [ x2; Some l1, x1 ] ) +# 45941 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38884,61 +45951,66 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x1; + MenhirLib.EngineTypes.startp = _startpos_x1_; + MenhirLib.EngineTypes.endp = _endpos_x1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; }; }; } = _menhir_stack in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 45987 "parsing/parser.ml" + ) = Obj.magic label in + let _1 : unit = Obj.magic _1 in let _3 : unit = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.pattern) = Obj.magic _1 in + let x1 : (Parsetree.expression) = Obj.magic x1 in + let l1 : ( +# 772 "parsing/parser.mly" + (string) +# 45995 "parsing/parser.ml" + ) = Obj.magic l1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__3_ in + let _startpos = _startpos_l1_ in + let _endpos = _endpos_label_ in let _v = - let _1 = - let _1 = - let _1 = - let _loc__3_ = (_startpos__3_, _endpos__3_) in - -# 2937 "parsing/parser.mly" - ( expecting _loc__3_ "pattern" ) -# 38919 "parsing/parser.ml" - - in - let _endpos__1_ = _endpos__3_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 38929 "parsing/parser.ml" - - in + let x2 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2938 "parsing/parser.mly" - ( _1 ) -# 38935 "parsing/parser.ml" +# 2855 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkexpvar ~loc label ) +# 46007 "parsing/parser.ml" in ( -# 2915 "parsing/parser.mly" - ( _1 ) -# 38941 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2876 "parsing/parser.mly" + ( [ x2; Some l1, x1 ] ) +# 46013 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38950,53 +46022,90 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = c; + MenhirLib.EngineTypes.startp = _startpos_c_; + MenhirLib.EngineTypes.endp = _endpos_c_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x1; + MenhirLib.EngineTypes.startp = _startpos_x1_; + MenhirLib.EngineTypes.endp = _endpos_x1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; } = _menhir_stack in - let _1 : ( -# 797 "parsing/parser.mly" + let _5 : unit = Obj.magic _5 in + let c : (Parsetree.type_constraint) = Obj.magic c in + let label : ( +# 785 "parsing/parser.mly" (string) -# 38963 "parsing/parser.ml" - ) = Obj.magic _1 in +# 46079 "parsing/parser.ml" + ) = Obj.magic label in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _3 : unit = Obj.magic _3 in + let x1 : (Parsetree.expression) = Obj.magic x1 in + let l1 : ( +# 772 "parsing/parser.mly" + (string) +# 46088 "parsing/parser.ml" + ) = Obj.magic l1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _startpos = _startpos_l1_ in + let _endpos = _endpos__5_ in let _v = - let _1 = - let _1 = - let _1 = - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 38978 "parsing/parser.ml" - - in - -# 2370 "parsing/parser.mly" - ( Ppat_var _1 ) -# 38984 "parsing/parser.ml" - - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let x2 = + let _endpos = _endpos__5_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 38993 "parsing/parser.ml" +# 2858 "parsing/parser.mly" + ( Some label, + mkexp_constraint ~loc:(_startpos__2_, _endpos) + (mkexpvar ~loc:_loc_label_ label) c ) +# 46102 "parsing/parser.ml" in ( -# 2372 "parsing/parser.mly" - ( _1 ) -# 38999 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2876 "parsing/parser.mly" + ( [ x2; Some l1, x1 ] ) +# 46108 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39008,37 +46117,69 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; } = _menhir_stack in + let _1_inlined1 : (Parsetree.expression) = Obj.magic _1_inlined1 in + let _3 : unit = Obj.magic _3 in + let l1 : ( +# 785 "parsing/parser.mly" + (string) +# 46150 "parsing/parser.ml" + ) = Obj.magic l1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _endpos = _endpos__1_inlined1_ in let _v = - let _1 = - let _1 = -# 2371 "parsing/parser.mly" - ( Ppat_any ) -# 39027 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in + let x2 = + let _1 = _1_inlined1 in + let _1 = + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 46163 "parsing/parser.ml" + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 46168 "parsing/parser.ml" + + in -# 1019 "parsing/parser.mly" - ( mkpat ~loc:_sloc _1 ) -# 39035 "parsing/parser.ml" +# 2851 "parsing/parser.mly" + ( None, _1 ) +# 46174 "parsing/parser.ml" in + let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 2372 "parsing/parser.mly" - ( _1 ) -# 39041 "parsing/parser.ml" - : (Parsetree.pattern)) +# 2880 "parsing/parser.mly" + ( let loc = _loc_l1_ in + [ x2; Some l1, mkexpvar ~loc l1] ) +# 46182 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39047,56 +46188,146 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Parsetree.structure) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Parsetree.payload) = -# 4140 "parsing/parser.mly" - ( PStr _1 ) -# 39067 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; }; } = _menhir_stack in - let _2 : (Parsetree.signature) = Obj.magic _2 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let _1_inlined2 : (string Asttypes.loc option) = Obj.magic _1_inlined2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _3 : unit = Obj.magic _3 in + let l1 : ( +# 785 "parsing/parser.mly" + (string) +# 46245 "parsing/parser.ml" + ) = Obj.magic l1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.payload) = -# 4141 "parsing/parser.mly" - ( PSig _2 ) -# 39099 "parsing/parser.ml" - in + let _endpos = _endpos_xs_ in + let _v = + let x2 = + let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined1_, _1_inlined3, _1_inlined2) in + let _1 = + let _1 = + let _3 = + let xs = + let xs = +# 264 "" + ( List.rev xs ) +# 46261 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 46266 "parsing/parser.ml" + + in + +# 2783 "parsing/parser.mly" + ( xs ) +# 46272 "parsing/parser.ml" + + in + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" + ( _1 ) +# 46283 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 46289 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 46309 "parsing/parser.ml" + + in + +# 2440 "parsing/parser.mly" + ( _1 ) +# 46315 "parsing/parser.ml" + + in + +# 2851 "parsing/parser.mly" + ( None, _1 ) +# 46321 "parsing/parser.ml" + + in + let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in + ( +# 2880 "parsing/parser.mly" + ( let loc = _loc_l1_ in + [ x2; Some l1, mkexpvar ~loc l1] ) +# 46329 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -39112,23 +46343,64 @@ module Tables = struct MenhirLib.EngineTypes.startp = _startpos__2_; MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; } = _menhir_stack in - let _2 : (Parsetree.core_type) = Obj.magic _2 in + let _2 : (Parsetree.expression) = Obj.magic _2 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" + (string) +# 46376 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _3 : unit = Obj.magic _3 in + let l1 : ( +# 785 "parsing/parser.mly" + (string) +# 46382 "parsing/parser.ml" + ) = Obj.magic l1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in - let _v : (Parsetree.payload) = -# 4142 "parsing/parser.mly" - ( PTyp _2 ) -# 39131 "parsing/parser.ml" - in + let _v = + let x2 = + let _1 = _1_inlined1 in + +# 2853 "parsing/parser.mly" + ( Some _1, _2 ) +# 46394 "parsing/parser.ml" + + in + let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in + ( +# 2880 "parsing/parser.mly" + ( let loc = _loc_l1_ in + [ x2; Some l1, mkexpvar ~loc l1] ) +# 46402 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -39140,27 +46412,69 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; }; } = _menhir_stack in - let _2 : (Parsetree.pattern) = Obj.magic _2 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 46448 "parsing/parser.ml" + ) = Obj.magic label in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _3 : unit = Obj.magic _3 in + let l1 : ( +# 785 "parsing/parser.mly" + (string) +# 46455 "parsing/parser.ml" + ) = Obj.magic l1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Parsetree.payload) = -# 4143 "parsing/parser.mly" - ( PPat (_2, None) ) -# 39163 "parsing/parser.ml" - in + let _endpos = _endpos_label_ in + let _v = + let x2 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 2855 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkexpvar ~loc label ) +# 46468 "parsing/parser.ml" + + in + let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in + ( +# 2880 "parsing/parser.mly" + ( let loc = _loc_l1_ in + [ x2; Some l1, mkexpvar ~loc l1] ) +# 46476 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -39172,66 +46486,92 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = c; + MenhirLib.EngineTypes.startp = _startpos_c_; + MenhirLib.EngineTypes.endp = _endpos_c_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; }; }; }; } = _menhir_stack in - let _4 : (Parsetree.expression) = Obj.magic _4 in + let _5 : unit = Obj.magic _5 in + let c : (Parsetree.type_constraint) = Obj.magic c in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 46542 "parsing/parser.ml" + ) = Obj.magic label in + let _2 : unit = Obj.magic _2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.pattern) = Obj.magic _2 in + let l1 : ( +# 785 "parsing/parser.mly" + (string) +# 46550 "parsing/parser.ml" + ) = Obj.magic l1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in - let _v : (Parsetree.payload) = -# 4144 "parsing/parser.mly" - ( PPat (_2, Some _4) ) -# 39209 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Parsetree.core_type) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Parsetree.core_type) = -# 3474 "parsing/parser.mly" - ( _1 ) -# 39234 "parsing/parser.ml" - in + let _endpos = _endpos__5_ in + let _v = + let x2 = + let _endpos = _endpos__5_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 2858 "parsing/parser.mly" + ( Some label, + mkexp_constraint ~loc:(_startpos__2_, _endpos) + (mkexpvar ~loc:_loc_label_ label) c ) +# 46565 "parsing/parser.ml" + + in + let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in + ( +# 2880 "parsing/parser.mly" + ( let loc = _loc_l1_ in + [ x2; Some l1, mkexpvar ~loc l1] ) +# 46573 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -39243,104 +46583,94 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = c; + MenhirLib.EngineTypes.startp = _startpos_c_; + MenhirLib.EngineTypes.endp = _endpos_c_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; }; }; } = _menhir_stack in - let _3 : (Parsetree.core_type) = Obj.magic _3 in + let _1_inlined1 : (Parsetree.expression) = Obj.magic _1_inlined1 in + let _6 : unit = Obj.magic _6 in + let _5 : unit = Obj.magic _5 in + let c : (Parsetree.type_constraint) = Obj.magic c in + let l1 : ( +# 785 "parsing/parser.mly" + (string) +# 46635 "parsing/parser.ml" + ) = Obj.magic l1 in let _2 : unit = Obj.magic _2 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_xs_ in - let _endpos = _endpos__3_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_inlined1_ in let _v = - let _1 = + let x2 = + let _1 = _1_inlined1 in let _1 = - let _1 = - let _1 = - let xs = -# 264 "" - ( List.rev xs ) -# 39278 "parsing/parser.ml" - in - -# 1086 "parsing/parser.mly" - ( xs ) -# 39283 "parsing/parser.ml" - - in - -# 3466 "parsing/parser.mly" - ( _1 ) -# 39289 "parsing/parser.ml" - - in + let _1 = +# 2297 "parsing/parser.mly" + ( _1 ) +# 46649 "parsing/parser.ml" + in -# 3470 "parsing/parser.mly" - ( Ptyp_poly(_1, _3) ) -# 39295 "parsing/parser.ml" +# 2440 "parsing/parser.mly" + ( _1 ) +# 46654 "parsing/parser.ml" in - let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_xs_) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 39305 "parsing/parser.ml" +# 2851 "parsing/parser.mly" + ( None, _1 ) +# 46660 "parsing/parser.ml" in + let _endpos_x2_ = _endpos__1_inlined1_ in + let _endpos = _endpos_x2_ in + let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 3476 "parsing/parser.mly" - ( _1 ) -# 39311 "parsing/parser.ml" - : (Parsetree.core_type)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Parsetree.core_type) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _1 = -# 3505 "parsing/parser.mly" - ( _1 ) -# 39338 "parsing/parser.ml" - in - ( -# 3474 "parsing/parser.mly" - ( _1 ) -# 39343 "parsing/parser.ml" - : (Parsetree.core_type)) +# 2885 "parsing/parser.mly" + ( let x1 = + mkexp_constraint ~loc:(_startpos__2_, _endpos) + (mkexpvar ~loc:_loc_l1_ l1) c + in + [ x2; Some l1, x1] ) +# 46673 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39353,128 +46683,167 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = c; + MenhirLib.EngineTypes.startp = _startpos_c_; + MenhirLib.EngineTypes.endp = _endpos_c_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; }; }; } = _menhir_stack in - let _1 : (Parsetree.core_type) = Obj.magic _1 in + let xs : (Parsetree.case list) = Obj.magic xs in + let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in + let _1_inlined2 : (string Asttypes.loc option) = Obj.magic _1_inlined2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _6 : unit = Obj.magic _6 in + let _5 : unit = Obj.magic _5 in + let c : (Parsetree.type_constraint) = Obj.magic c in + let l1 : ( +# 785 "parsing/parser.mly" + (string) +# 46756 "parsing/parser.ml" + ) = Obj.magic l1 in let _2 : unit = Obj.magic _2 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_xs_ in - let _endpos = _endpos__1_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos_xs_ in let _v = - let _1 = + let x2 = + let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined1_, _1_inlined3, _1_inlined2) in let _1 = - let _3 = -# 3505 "parsing/parser.mly" - ( _1 ) -# 39386 "parsing/parser.ml" - in let _1 = - let _1 = - let xs = + let _3 = + let xs = + let xs = # 264 "" ( List.rev xs ) -# 39393 "parsing/parser.ml" - in +# 46773 "parsing/parser.ml" + in + +# 1188 "parsing/parser.mly" + ( xs ) +# 46778 "parsing/parser.ml" + + in -# 1086 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 39398 "parsing/parser.ml" +# 46784 "parsing/parser.ml" in - -# 3466 "parsing/parser.mly" + let _endpos__3_ = _endpos_xs_ in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4286 "parsing/parser.mly" ( _1 ) -# 39404 "parsing/parser.ml" +# 46795 "parsing/parser.ml" + + in + +# 4299 "parsing/parser.mly" + ( _1, _2 ) +# 46801 "parsing/parser.ml" + + in + let _endpos = _endpos__3_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2299 "parsing/parser.mly" + ( let loc = make_loc _sloc in + let cases = _3 in + (* There are two choices of where to put attributes: on the + Pexp_function node; on the Pfunction_cases body. We put them on the + Pexp_function node here because the compiler only uses + Pfunction_cases attributes for enabling/disabling warnings in + typechecking. For standalone function cases, we want the compiler to + respect, e.g., [@inline] attributes. + *) + let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in + mkexp_attrs ~loc:_sloc desc _2 + ) +# 46821 "parsing/parser.ml" in -# 3470 "parsing/parser.mly" - ( Ptyp_poly(_1, _3) ) -# 39410 "parsing/parser.ml" +# 2440 "parsing/parser.mly" + ( _1 ) +# 46827 "parsing/parser.ml" in - let _startpos__1_ = _startpos_xs_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 39420 "parsing/parser.ml" +# 2851 "parsing/parser.mly" + ( None, _1 ) +# 46833 "parsing/parser.ml" in + let _endpos_x2_ = _endpos_xs_ in + let _endpos = _endpos_x2_ in + let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 3476 "parsing/parser.mly" - ( _1 ) -# 39426 "parsing/parser.ml" - : (Parsetree.core_type)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - } = _menhir_stack in - let _4 : unit = Obj.magic _4 in - let _3 : (Parsetree.payload) = Obj.magic _3 in - let _2 : (Ast_helper.str) = Obj.magic _2 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in - let _v = - let _endpos = _endpos__4_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - ( -# 4101 "parsing/parser.mly" - ( mk_attr ~loc:(make_loc _sloc) _2 _3 ) -# 39477 "parsing/parser.ml" - : (Parsetree.attribute)) +# 2885 "parsing/parser.mly" + ( let x1 = + mkexp_constraint ~loc:(_startpos__2_, _endpos) + (mkexpvar ~loc:_loc_l1_ l1) c + in + [ x2; Some l1, x1] ) +# 46846 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39487,51 +46856,45 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = prim; - MenhirLib.EngineTypes.startp = _startpos_prim_; - MenhirLib.EngineTypes.endp = _endpos_prim_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _7; - MenhirLib.EngineTypes.startp = _startpos__7_; - MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _5; - MenhirLib.EngineTypes.startp = _startpos__5_; - MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.semv = c; + MenhirLib.EngineTypes.startp = _startpos_c_; + MenhirLib.EngineTypes.endp = _endpos_c_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; @@ -39540,116 +46903,46 @@ module Tables = struct }; }; } = _menhir_stack in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let prim : (string list) = Obj.magic prim in - let _7 : unit = Obj.magic _7 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let _2_inlined1 : (Parsetree.expression) = Obj.magic _2_inlined1 in + let _1_inlined1 : ( +# 772 "parsing/parser.mly" + (string) +# 46911 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in - let _1_inlined2 : (Asttypes.label) = Obj.magic _1_inlined2 in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let ext : (string Asttypes.loc option) = Obj.magic ext in + let c : (Parsetree.type_constraint) = Obj.magic c in + let l1 : ( +# 785 "parsing/parser.mly" + (string) +# 46919 "parsing/parser.ml" + ) = Obj.magic l1 in + let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined3_ in + let _endpos = _endpos__2_inlined1_ in let _v = - let attrs2 = - let _1 = _1_inlined3 in - -# 4110 "parsing/parser.mly" - ( _1 ) -# 39562 "parsing/parser.ml" - - in - let _endpos_attrs2_ = _endpos__1_inlined3_ in - let id = - let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 984 "parsing/parser.mly" - ( mkrhs _1 _sloc ) -# 39574 "parsing/parser.ml" - - in - let attrs1 = - let _1 = _1_inlined1 in + let x2 = + let (_2, _1) = (_2_inlined1, _1_inlined1) in -# 4114 "parsing/parser.mly" - ( _1 ) -# 39582 "parsing/parser.ml" +# 2853 "parsing/parser.mly" + ( Some _1, _2 ) +# 46932 "parsing/parser.ml" in - let _endpos = _endpos_attrs2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - ( -# 3102 "parsing/parser.mly" - ( let attrs = attrs1 @ attrs2 in - let loc = make_loc _sloc in - let docs = symbol_docs _sloc in - Val.mk id ty ~prim ~attrs ~loc ~docs, - ext ) -# 39595 "parsing/parser.ml" - : (Parsetree.value_description * string Asttypes.loc option)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v = - let _1 = -# 3969 "parsing/parser.mly" - ( Public ) -# 39615 "parsing/parser.ml" - in - ( -# 3966 "parsing/parser.mly" - ( _1 ) -# 39620 "parsing/parser.ml" - : (Asttypes.private_flag)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v = - let _1 = -# 3970 "parsing/parser.mly" - ( Private ) -# 39647 "parsing/parser.ml" - in + let _endpos_x2_ = _endpos__2_inlined1_ in + let _endpos = _endpos_x2_ in + let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in ( -# 3966 "parsing/parser.mly" - ( _1 ) -# 39652 "parsing/parser.ml" - : (Asttypes.private_flag)) +# 2885 "parsing/parser.mly" + ( let x1 = + mkexp_constraint ~loc:(_startpos__2_, _endpos) + (mkexpvar ~loc:_loc_l1_ l1) c + in + [ x2; Some l1, x1] ) +# 46945 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39658,99 +46951,99 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 3992 "parsing/parser.mly" - ( Public, Concrete ) -# 39671 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 3993 "parsing/parser.mly" - ( Private, Concrete ) -# 39696 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 3994 "parsing/parser.mly" - ( Public, Virtual ) -# 39721 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = c; + MenhirLib.EngineTypes.startp = _startpos_c_; + MenhirLib.EngineTypes.endp = _endpos_c_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; }; } = _menhir_stack in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 47009 "parsing/parser.ml" + ) = Obj.magic label in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _6 : unit = Obj.magic _6 in + let _5 : unit = Obj.magic _5 in + let c : (Parsetree.type_constraint) = Obj.magic c in + let l1 : ( +# 785 "parsing/parser.mly" + (string) +# 47018 "parsing/parser.ml" + ) = Obj.magic l1 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 3995 "parsing/parser.mly" - ( Private, Virtual ) -# 39753 "parsing/parser.ml" - in + let _endpos = _endpos_label_ in + let _v = + let x2 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 2855 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkexpvar ~loc label ) +# 47032 "parsing/parser.ml" + + in + let _endpos_x2_ = _endpos_label_ in + let _endpos = _endpos_x2_ in + let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in + ( +# 2885 "parsing/parser.mly" + ( let x1 = + mkexp_constraint ~loc:(_startpos__2_, _endpos) + (mkexpvar ~loc:_loc_l1_ l1) c + in + [ x2; Some l1, x1] ) +# 47045 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -39762,45 +47055,119 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _5_inlined1; + MenhirLib.EngineTypes.startp = _startpos__5_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__5_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = c_inlined1; + MenhirLib.EngineTypes.startp = _startpos_c_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_c_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = c; + MenhirLib.EngineTypes.startp = _startpos_c_; + MenhirLib.EngineTypes.endp = _endpos_c_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = l1; + MenhirLib.EngineTypes.startp = _startpos_l1_; + MenhirLib.EngineTypes.endp = _endpos_l1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + }; + }; }; } = _menhir_stack in + let _5_inlined1 : unit = Obj.magic _5_inlined1 in + let c_inlined1 : (Parsetree.type_constraint) = Obj.magic c_inlined1 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 47129 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _6 : unit = Obj.magic _6 in + let _5 : unit = Obj.magic _5 in + let c : (Parsetree.type_constraint) = Obj.magic c in + let l1 : ( +# 785 "parsing/parser.mly" + (string) +# 47139 "parsing/parser.ml" + ) = Obj.magic l1 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__2_ in - let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 3996 "parsing/parser.mly" - ( Private, Virtual ) -# 39785 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in - let _endpos = _startpos in - let _v : (Asttypes.rec_flag) = -# 3947 "parsing/parser.mly" - ( Nonrecursive ) -# 39803 "parsing/parser.ml" - in + let _endpos = _endpos__5_inlined1_ in + let _v = + let x2 = + let (_endpos__5_, _startpos__2_, c) = (_endpos__5_inlined1_, _startpos__2_inlined1_, c_inlined1) in + let _endpos = _endpos__5_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 2858 "parsing/parser.mly" + ( Some label, + mkexp_constraint ~loc:(_startpos__2_, _endpos) + (mkexpvar ~loc:_loc_label_ label) c ) +# 47156 "parsing/parser.ml" + + in + let _endpos_x2_ = _endpos__5_inlined1_ in + let _endpos = _endpos_x2_ in + let _loc_l1_ = (_startpos_l1_, _endpos_l1_) in + ( +# 2885 "parsing/parser.mly" + ( let x1 = + mkexp_constraint ~loc:(_startpos__2_, _endpos) + (mkexpvar ~loc:_loc_l1_ l1) c + in + [ x2; Some l1, x1] ) +# 47169 "parsing/parser.ml" + : ((string option * Parsetree.expression) list)) + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -39817,14 +47184,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : unit = Obj.magic _1 in + let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v : (Asttypes.rec_flag) = -# 3948 "parsing/parser.mly" - ( Recursive ) -# 39828 "parsing/parser.ml" + let _v : (Asttypes.closed_flag * (string option * Parsetree.pattern) list) = +# 3148 "parsing/parser.mly" + ( Closed, _1 ) +# 47195 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39833,46 +47200,13 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = fields; - MenhirLib.EngineTypes.startp = _startpos_fields_; - MenhirLib.EngineTypes.endp = _endpos_fields_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let fields : ((Longident.t Asttypes.loc * Parsetree.expression) list) = Obj.magic fields in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_fields_ in - let _endpos = _endpos_fields_ in - let _v = - let eo = -# 123 "" - ( None ) -# 39854 "parsing/parser.ml" - in - ( -# 2838 "parsing/parser.mly" - ( eo, fields ) -# 39859 "parsing/parser.ml" - : (Parsetree.expression option * - (Longident.t Asttypes.loc * Parsetree.expression) list)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = fields; - MenhirLib.EngineTypes.startp = _startpos_fields_; - MenhirLib.EngineTypes.endp = _endpos_fields_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -39880,113 +47214,24 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let fields : ((Longident.t Asttypes.loc * Parsetree.expression) list) = Obj.magic fields in - let _2 : unit = Obj.magic _2 in - let x : (Parsetree.expression) = Obj.magic x in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos_fields_ in - let _v = - let eo = - let x = -# 196 "" - ( x ) -# 39902 "parsing/parser.ml" - in - -# 126 "" - ( Some x ) -# 39907 "parsing/parser.ml" - - in - ( -# 2838 "parsing/parser.mly" - ( eo, fields ) -# 39913 "parsing/parser.ml" - : (Parsetree.expression option * - (Longident.t Asttypes.loc * Parsetree.expression) list)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = d; - MenhirLib.EngineTypes.startp = _startpos_d_; - MenhirLib.EngineTypes.endp = _endpos_d_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * - Parsetree.core_type option * Parsetree.attributes * Location.t * - Docstrings.info) = Obj.magic d in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_d_ in - let _endpos = _endpos_d_ in - let _v = - let x = -# 3287 "parsing/parser.mly" - ( - let cid, vars, args, res, attrs, loc, info = d in - Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info - ) -# 39946 "parsing/parser.ml" - in - ( -# 1217 "parsing/parser.mly" - ( [x] ) -# 39951 "parsing/parser.ml" - : (Parsetree.constructor_declaration list)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = d; - MenhirLib.EngineTypes.startp = _startpos_d_; - MenhirLib.EngineTypes.endp = _endpos_d_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * - Parsetree.core_type option * Parsetree.attributes * Location.t * - Docstrings.info) = Obj.magic d in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_d_ in - let _endpos = _endpos_d_ in - let _v = - let x = -# 3287 "parsing/parser.mly" - ( - let cid, vars, args, res, attrs, loc, info = d in - Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info - ) -# 39983 "parsing/parser.ml" - in - ( -# 1220 "parsing/parser.mly" - ( [x] ) -# 39988 "parsing/parser.ml" - : (Parsetree.constructor_declaration list)) - in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : (Asttypes.closed_flag * (string option * Parsetree.pattern) list) = +# 3150 "parsing/parser.mly" + ( Open, _1 ) +# 47234 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -39998,38 +47243,40 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = d; - MenhirLib.EngineTypes.startp = _startpos_d_; - MenhirLib.EngineTypes.endp = _endpos_d_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in - let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * - Parsetree.core_type option * Parsetree.attributes * Location.t * - Docstrings.info) = Obj.magic d in - let xs : (Parsetree.constructor_declaration list) = Obj.magic xs in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_xs_ in - let _endpos = _endpos_d_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in let _v = - let x = -# 3287 "parsing/parser.mly" - ( - let cid, vars, args, res, attrs, loc, info = d in - Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info - ) -# 40027 "parsing/parser.ml" + let _1 = +# 3126 "parsing/parser.mly" + ( None, _1 ) +# 47274 "parsing/parser.ml" in ( -# 1224 "parsing/parser.mly" - ( x :: xs ) -# 40032 "parsing/parser.ml" - : (Parsetree.constructor_declaration list)) +# 3152 "parsing/parser.mly" + ( Open, [ _1 ] ) +# 47279 "parsing/parser.ml" + : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40041,39 +47288,55 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = d; - MenhirLib.EngineTypes.startp = _startpos_d_; - MenhirLib.EngineTypes.endp = _endpos_d_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; } = _menhir_stack in - let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * - Parsetree.core_type option * Parsetree.attributes * Location.t * - Docstrings.info) = Obj.magic d in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1 : ( +# 772 "parsing/parser.mly" + (string) +# 47322 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_d_ in - let _endpos = _endpos_d_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in let _v = - let x = - let _1 = -# 3404 "parsing/parser.mly" - ( - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info - ) -# 40065 "parsing/parser.ml" - in + let _1 = + let _2 = _2_inlined1 in -# 3398 "parsing/parser.mly" - ( _1 ) -# 40070 "parsing/parser.ml" +# 3128 "parsing/parser.mly" + ( Some _1, _2 ) +# 47333 "parsing/parser.ml" in ( -# 1217 "parsing/parser.mly" - ( [x] ) -# 40076 "parsing/parser.ml" - : (Parsetree.extension_constructor list)) +# 3152 "parsing/parser.mly" + ( Open, [ _1 ] ) +# 47339 "parsing/parser.ml" + : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40085,27 +47348,56 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; } = _menhir_stack in - let _1 : (Parsetree.extension_constructor) = Obj.magic _1 in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 47381 "parsing/parser.ml" + ) = Obj.magic label in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in + let _endpos = _endpos__3_ in let _v = - let x = -# 3400 "parsing/parser.mly" - ( _1 ) -# 40103 "parsing/parser.ml" - in + let _1 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3130 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 47394 "parsing/parser.ml" + + in ( -# 1217 "parsing/parser.mly" - ( [x] ) -# 40108 "parsing/parser.ml" - : (Parsetree.extension_constructor list)) +# 3152 "parsing/parser.mly" + ( Open, [ _1 ] ) +# 47400 "parsing/parser.ml" + : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40117,39 +47409,88 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = d; - MenhirLib.EngineTypes.startp = _startpos_d_; - MenhirLib.EngineTypes.endp = _endpos_d_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; } = _menhir_stack in - let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * - Parsetree.core_type option * Parsetree.attributes * Location.t * - Docstrings.info) = Obj.magic d in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 47469 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_d_ in - let _endpos = _endpos_d_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in let _v = - let x = - let _1 = -# 3404 "parsing/parser.mly" - ( - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info - ) -# 40141 "parsing/parser.ml" - in + let _1 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 3398 "parsing/parser.mly" - ( _1 ) -# 40146 "parsing/parser.ml" +# 3133 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 47487 "parsing/parser.ml" in ( -# 1220 "parsing/parser.mly" - ( [x] ) -# 40152 "parsing/parser.ml" - : (Parsetree.extension_constructor list)) +# 3152 "parsing/parser.mly" + ( Open, [ _1 ] ) +# 47493 "parsing/parser.ml" + : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40167,22 +47508,15 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : (Parsetree.extension_constructor) = Obj.magic _1 in + let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v = - let x = -# 3400 "parsing/parser.mly" - ( _1 ) -# 40179 "parsing/parser.ml" - in - ( -# 1220 "parsing/parser.mly" - ( [x] ) -# 40184 "parsing/parser.ml" - : (Parsetree.extension_constructor list)) - in + let _v : (Asttypes.closed_flag * (string option * Parsetree.pattern) list) = +# 3148 "parsing/parser.mly" + ( Closed, _1 ) +# 47519 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -40194,46 +47528,34 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = d; - MenhirLib.EngineTypes.startp = _startpos_d_; - MenhirLib.EngineTypes.endp = _endpos_d_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in - let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * - Parsetree.core_type option * Parsetree.attributes * Location.t * - Docstrings.info) = Obj.magic d in - let xs : (Parsetree.extension_constructor list) = Obj.magic xs in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : ((string option * Parsetree.pattern) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_xs_ in - let _endpos = _endpos_d_ in - let _v = - let x = - let _1 = -# 3404 "parsing/parser.mly" - ( - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info - ) -# 40224 "parsing/parser.ml" - in - -# 3398 "parsing/parser.mly" - ( _1 ) -# 40229 "parsing/parser.ml" - - in - ( -# 1224 "parsing/parser.mly" - ( x :: xs ) -# 40235 "parsing/parser.ml" - : (Parsetree.extension_constructor list)) - in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in + let _v : (Asttypes.closed_flag * (string option * Parsetree.pattern) list) = +# 3150 "parsing/parser.mly" + ( Open, _1 ) +# 47558 "parsing/parser.ml" + in { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = Obj.repr _v; @@ -40245,33 +47567,40 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in - let _1 : (Parsetree.extension_constructor) = Obj.magic _1 in - let xs : (Parsetree.extension_constructor list) = Obj.magic xs in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : (Parsetree.pattern) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_xs_ in - let _endpos = _endpos__1_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in let _v = - let x = -# 3400 "parsing/parser.mly" - ( _1 ) -# 40269 "parsing/parser.ml" + let _1 = +# 3126 "parsing/parser.mly" + ( None, _1 ) +# 47598 "parsing/parser.ml" in ( -# 1224 "parsing/parser.mly" - ( x :: xs ) -# 40274 "parsing/parser.ml" - : (Parsetree.extension_constructor list)) +# 3152 "parsing/parser.mly" + ( Open, [ _1 ] ) +# 47603 "parsing/parser.ml" + : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40283,32 +47612,55 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = d; - MenhirLib.EngineTypes.startp = _startpos_d_; - MenhirLib.EngineTypes.endp = _endpos_d_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; } = _menhir_stack in - let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * - Parsetree.core_type option * Parsetree.attributes * Location.t * - Docstrings.info) = Obj.magic d in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _2_inlined1 : (Parsetree.pattern) = Obj.magic _2_inlined1 in + let _1 : ( +# 772 "parsing/parser.mly" + (string) +# 47646 "parsing/parser.ml" + ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_d_ in - let _endpos = _endpos_d_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in let _v = - let x = -# 3404 "parsing/parser.mly" - ( - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info - ) -# 40306 "parsing/parser.ml" - in + let _1 = + let _2 = _2_inlined1 in + +# 3128 "parsing/parser.mly" + ( Some _1, _2 ) +# 47657 "parsing/parser.ml" + + in ( -# 1217 "parsing/parser.mly" - ( [x] ) -# 40311 "parsing/parser.ml" - : (Parsetree.extension_constructor list)) +# 3152 "parsing/parser.mly" + ( Open, [ _1 ] ) +# 47663 "parsing/parser.ml" + : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40320,32 +47672,56 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = d; - MenhirLib.EngineTypes.startp = _startpos_d_; - MenhirLib.EngineTypes.endp = _endpos_d_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; } = _menhir_stack in - let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * - Parsetree.core_type option * Parsetree.attributes * Location.t * - Docstrings.info) = Obj.magic d in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 47705 "parsing/parser.ml" + ) = Obj.magic label in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_d_ in - let _endpos = _endpos_d_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in let _v = - let x = -# 3404 "parsing/parser.mly" - ( - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info - ) -# 40343 "parsing/parser.ml" - in + let _1 = + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3130 "parsing/parser.mly" + ( let loc = _loc_label_ in + Some label, mkpatvar ~loc label ) +# 47718 "parsing/parser.ml" + + in ( -# 1220 "parsing/parser.mly" - ( [x] ) -# 40348 "parsing/parser.ml" - : (Parsetree.extension_constructor list)) +# 3152 "parsing/parser.mly" + ( Open, [ _1 ] ) +# 47724 "parsing/parser.ml" + : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40358,38 +47734,87 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = d; - MenhirLib.EngineTypes.startp = _startpos_d_; - MenhirLib.EngineTypes.endp = _endpos_d_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = cty; + MenhirLib.EngineTypes.startp = _startpos_cty_; + MenhirLib.EngineTypes.endp = _endpos_cty_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; }; } = _menhir_stack in - let d : (Ast_helper.str * Ast_helper.str list * Parsetree.constructor_arguments * - Parsetree.core_type option * Parsetree.attributes * Location.t * - Docstrings.info) = Obj.magic d in - let xs : (Parsetree.extension_constructor list) = Obj.magic xs in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _6 : unit = Obj.magic _6 in + let cty : (Parsetree.core_type) = Obj.magic cty in + let _4 : unit = Obj.magic _4 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 47793 "parsing/parser.ml" + ) = Obj.magic label in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_xs_ in - let _endpos = _endpos_d_ in + let _startpos = _startpos__1_ in + let _endpos = _endpos__3_ in let _v = - let x = -# 3404 "parsing/parser.mly" - ( - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info - ) -# 40387 "parsing/parser.ml" - in + let _1 = + let _startpos__2_ = _startpos__2_inlined1_ in + let _endpos = _endpos__6_ in + let _loc_label_ = (_startpos_label_, _endpos_label_) in + +# 3133 "parsing/parser.mly" + ( let lbl_loc = _loc_label_ in + let pat_loc = _startpos__2_, _endpos in + let pat = mkpatvar ~loc:lbl_loc label in + Some label, mkpat ~loc:pat_loc (Ppat_constraint(pat, cty)) ) +# 47811 "parsing/parser.ml" + + in ( -# 1224 "parsing/parser.mly" - ( x :: xs ) -# 40392 "parsing/parser.ml" - : (Parsetree.extension_constructor list)) +# 3152 "parsing/parser.mly" + ( Open, [ _1 ] ) +# 47817 "parsing/parser.ml" + : (Asttypes.closed_flag * (string option * Parsetree.pattern) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40405,9 +47830,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = -# 1062 "parsing/parser.mly" +# 1050 "parsing/parser.mly" ( [] ) -# 40411 "parsing/parser.ml" +# 47836 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40465,21 +47890,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2219 "parsing/parser.mly" +# 2207 "parsing/parser.mly" ( _1, _3, make_loc _sloc ) -# 40471 "parsing/parser.ml" +# 47896 "parsing/parser.ml" in # 188 "" ( x ) -# 40477 "parsing/parser.ml" +# 47902 "parsing/parser.ml" in ( -# 1064 "parsing/parser.mly" +# 1052 "parsing/parser.mly" ( x :: xs ) -# 40483 "parsing/parser.ml" +# 47908 "parsing/parser.ml" : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list)) in { @@ -40503,9 +47928,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Parsetree.function_param list) = -# 1095 "parsing/parser.mly" +# 1083 "parsing/parser.mly" ( List.rev x ) -# 40509 "parsing/parser.ml" +# 47934 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40535,9 +47960,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.function_param list) = -# 1097 "parsing/parser.mly" +# 1085 "parsing/parser.mly" ( List.rev_append x xs ) -# 40541 "parsing/parser.ml" +# 47966 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40560,9 +47985,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : ((Lexing.position * Parsetree.functor_parameter) list) = -# 1076 "parsing/parser.mly" +# 1064 "parsing/parser.mly" ( [ x ] ) -# 40566 "parsing/parser.ml" +# 47991 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40592,9 +48017,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : ((Lexing.position * Parsetree.functor_parameter) list) = -# 1078 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( x :: xs ) -# 40598 "parsing/parser.ml" +# 48023 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40617,9 +48042,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : ((Asttypes.arg_label * Parsetree.expression) list) = -# 1076 "parsing/parser.mly" +# 1064 "parsing/parser.mly" ( [ x ] ) -# 40623 "parsing/parser.ml" +# 48048 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40649,9 +48074,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : ((Asttypes.arg_label * Parsetree.expression) list) = -# 1078 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( x :: xs ) -# 40655 "parsing/parser.ml" +# 48080 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40674,9 +48099,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Asttypes.label list) = -# 1076 "parsing/parser.mly" +# 1064 "parsing/parser.mly" ( [ x ] ) -# 40680 "parsing/parser.ml" +# 48105 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40706,9 +48131,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Asttypes.label list) = -# 1078 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( x :: xs ) -# 40712 "parsing/parser.ml" +# 48137 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40743,15 +48168,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3462 "parsing/parser.mly" +# 3586 "parsing/parser.mly" ( mkrhs _2 _sloc ) -# 40749 "parsing/parser.ml" +# 48174 "parsing/parser.ml" in ( -# 1076 "parsing/parser.mly" +# 1064 "parsing/parser.mly" ( [ x ] ) -# 40755 "parsing/parser.ml" +# 48180 "parsing/parser.ml" : (Asttypes.label Asttypes.loc list)) in { @@ -40794,15 +48219,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3462 "parsing/parser.mly" +# 3586 "parsing/parser.mly" ( mkrhs _2 _sloc ) -# 40800 "parsing/parser.ml" +# 48225 "parsing/parser.ml" in ( -# 1078 "parsing/parser.mly" +# 1066 "parsing/parser.mly" ( x :: xs ) -# 40806 "parsing/parser.ml" +# 48231 "parsing/parser.ml" : (Asttypes.label Asttypes.loc list)) in { @@ -40829,12 +48254,12 @@ module Tables = struct let _1 = # 123 "" ( None ) -# 40833 "parsing/parser.ml" +# 48258 "parsing/parser.ml" in ( -# 1188 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( [x] ) -# 40838 "parsing/parser.ml" +# 48263 "parsing/parser.ml" : (Parsetree.case list)) in { @@ -40870,13 +48295,13 @@ module Tables = struct # 126 "" ( Some x ) -# 40874 "parsing/parser.ml" +# 48299 "parsing/parser.ml" in ( -# 1188 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( [x] ) -# 40880 "parsing/parser.ml" +# 48305 "parsing/parser.ml" : (Parsetree.case list)) in { @@ -40914,9 +48339,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.case list) = -# 1192 "parsing/parser.mly" +# 1180 "parsing/parser.mly" ( x :: xs ) -# 40920 "parsing/parser.ml" +# 48345 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40941,20 +48366,20 @@ module Tables = struct let _v = let xs = let x = -# 3505 "parsing/parser.mly" +# 3629 "parsing/parser.mly" ( _1 ) -# 40947 "parsing/parser.ml" +# 48372 "parsing/parser.ml" in -# 1123 "parsing/parser.mly" +# 1111 "parsing/parser.mly" ( [ x ] ) -# 40952 "parsing/parser.ml" +# 48377 "parsing/parser.ml" in ( -# 1131 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 40958 "parsing/parser.ml" +# 48383 "parsing/parser.ml" : (Parsetree.core_type list)) in { @@ -40994,20 +48419,20 @@ module Tables = struct let _v = let xs = let x = -# 3505 "parsing/parser.mly" +# 3629 "parsing/parser.mly" ( _1 ) -# 41000 "parsing/parser.ml" +# 48425 "parsing/parser.ml" in -# 1127 "parsing/parser.mly" +# 1115 "parsing/parser.mly" ( x :: xs ) -# 41005 "parsing/parser.ml" +# 48430 "parsing/parser.ml" in ( -# 1131 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 41011 "parsing/parser.ml" +# 48436 "parsing/parser.ml" : (Parsetree.core_type list)) in { @@ -41032,14 +48457,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1123 "parsing/parser.mly" +# 1111 "parsing/parser.mly" ( [ x ] ) -# 41038 "parsing/parser.ml" +# 48463 "parsing/parser.ml" in ( -# 1131 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 41043 "parsing/parser.ml" +# 48468 "parsing/parser.ml" : (Parsetree.with_constraint list)) in { @@ -41078,14 +48503,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1127 "parsing/parser.mly" +# 1115 "parsing/parser.mly" ( x :: xs ) -# 41084 "parsing/parser.ml" +# 48509 "parsing/parser.ml" in ( -# 1131 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 41089 "parsing/parser.ml" +# 48514 "parsing/parser.ml" : (Parsetree.with_constraint list)) in { @@ -41110,14 +48535,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1123 "parsing/parser.mly" +# 1111 "parsing/parser.mly" ( [ x ] ) -# 41116 "parsing/parser.ml" +# 48541 "parsing/parser.ml" in ( -# 1131 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 41121 "parsing/parser.ml" +# 48546 "parsing/parser.ml" : (Parsetree.row_field list)) in { @@ -41156,14 +48581,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1127 "parsing/parser.mly" +# 1115 "parsing/parser.mly" ( x :: xs ) -# 41162 "parsing/parser.ml" +# 48587 "parsing/parser.ml" in ( -# 1131 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 41167 "parsing/parser.ml" +# 48592 "parsing/parser.ml" : (Parsetree.row_field list)) in { @@ -41188,14 +48613,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1123 "parsing/parser.mly" +# 1111 "parsing/parser.mly" ( [ x ] ) -# 41194 "parsing/parser.ml" +# 48619 "parsing/parser.ml" in ( -# 1131 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 41199 "parsing/parser.ml" +# 48624 "parsing/parser.ml" : (Parsetree.core_type list)) in { @@ -41234,14 +48659,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1127 "parsing/parser.mly" +# 1115 "parsing/parser.mly" ( x :: xs ) -# 41240 "parsing/parser.ml" +# 48665 "parsing/parser.ml" in ( -# 1131 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 41245 "parsing/parser.ml" +# 48670 "parsing/parser.ml" : (Parsetree.core_type list)) in { @@ -41266,14 +48691,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1123 "parsing/parser.mly" +# 1111 "parsing/parser.mly" ( [ x ] ) -# 41272 "parsing/parser.ml" +# 48697 "parsing/parser.ml" in ( -# 1131 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 41277 "parsing/parser.ml" +# 48702 "parsing/parser.ml" : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list)) in { @@ -41312,14 +48737,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1127 "parsing/parser.mly" +# 1115 "parsing/parser.mly" ( x :: xs ) -# 41318 "parsing/parser.ml" +# 48743 "parsing/parser.ml" in ( -# 1131 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 41323 "parsing/parser.ml" +# 48748 "parsing/parser.ml" : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list)) in { @@ -41344,14 +48769,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1123 "parsing/parser.mly" +# 1111 "parsing/parser.mly" ( [ x ] ) -# 41350 "parsing/parser.ml" +# 48775 "parsing/parser.ml" in ( -# 1131 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 41355 "parsing/parser.ml" +# 48780 "parsing/parser.ml" : (Parsetree.core_type list)) in { @@ -41390,14 +48815,14 @@ module Tables = struct let _endpos = _endpos_x_ in let _v = let xs = -# 1127 "parsing/parser.mly" +# 1115 "parsing/parser.mly" ( x :: xs ) -# 41396 "parsing/parser.ml" +# 48821 "parsing/parser.ml" in ( -# 1131 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 41401 "parsing/parser.ml" +# 48826 "parsing/parser.ml" : (Parsetree.core_type list)) in { @@ -41410,253 +48835,34 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let x : (Parsetree.core_type) = Obj.magic x in - let _2 : unit = Obj.magic _2 in - let xs : (Parsetree.core_type list) = Obj.magic xs in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_xs_ in - let _endpos = _endpos_x_ in - let _v : (Parsetree.core_type list) = -# 1154 "parsing/parser.mly" - ( x :: xs ) -# 41441 "parsing/parser.ml" - in - { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = x2; - MenhirLib.EngineTypes.startp = _startpos_x2_; - MenhirLib.EngineTypes.endp = _endpos_x2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x1; - MenhirLib.EngineTypes.startp = _startpos_x1_; - MenhirLib.EngineTypes.endp = _endpos_x1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - } = _menhir_stack in - let x2 : (Parsetree.core_type) = Obj.magic x2 in - let _2 : unit = Obj.magic _2 in - let x1 : (Parsetree.core_type) = Obj.magic x1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x1_ in - let _endpos = _endpos_x2_ in - let _v : (Parsetree.core_type list) = -# 1158 "parsing/parser.mly" - ( [ x2; x1 ] ) -# 41480 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1; MenhirLib.EngineTypes.startp = _startpos__1_; MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; + MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : (Parsetree.expression) = Obj.magic _1 in - let _2 : unit = Obj.magic _2 in - let xs : (Parsetree.expression list) = Obj.magic xs in + let _1 : (Parsetree.core_type) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_xs_ in + let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v = - let x = - let _1 = -# 2309 "parsing/parser.mly" - ( _1 ) -# 41521 "parsing/parser.ml" + let xs = + let x = +# 3729 "parsing/parser.mly" + ( None, _1 ) +# 48854 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" - ( _1 ) -# 41526 "parsing/parser.ml" +# 1111 "parsing/parser.mly" + ( [ x ] ) +# 48859 "parsing/parser.ml" in ( -# 1154 "parsing/parser.mly" - ( x :: xs ) -# 41532 "parsing/parser.ml" - : (Parsetree.expression list)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs_inlined1; - MenhirLib.EngineTypes.startp = _startpos_xs_inlined1_; - MenhirLib.EngineTypes.endp = _endpos_xs_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - } = _menhir_stack in - let xs_inlined1 : (Parsetree.case list) = Obj.magic xs_inlined1 in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in - let _2 : unit = Obj.magic _2 in - let xs : (Parsetree.expression list) = Obj.magic xs in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_xs_ in - let _endpos = _endpos_xs_inlined1_ in - let _v = - let x = - let (_endpos_xs_, xs) = (_endpos_xs_inlined1_, xs_inlined1) in - let _1 = - let _3 = - let xs = - let xs = -# 264 "" - ( List.rev xs ) -# 41599 "parsing/parser.ml" - in - -# 1200 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( xs ) -# 41604 "parsing/parser.ml" - - in - -# 2798 "parsing/parser.mly" - ( xs ) -# 41610 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 41621 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 41627 "parsing/parser.ml" - - in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 41647 "parsing/parser.ml" - - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 41653 "parsing/parser.ml" - - in - ( -# 1154 "parsing/parser.mly" - ( x :: xs ) -# 41659 "parsing/parser.ml" - : (Parsetree.expression list)) +# 48865 "parsing/parser.ml" + : ((string option * Parsetree.core_type) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41669,9 +48875,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = ty; + MenhirLib.EngineTypes.startp = _startpos_ty_; + MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -41679,189 +48885,41 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let _1_inlined1 : (Parsetree.expression) = Obj.magic _1_inlined1 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.expression) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined1_ in - let _v = - let x2 = - let _1 = _1_inlined1 in - let _1 = -# 2309 "parsing/parser.mly" - ( _1 ) -# 41702 "parsing/parser.ml" - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 41707 "parsing/parser.ml" - - in - let x1 = - let _1 = -# 2309 "parsing/parser.mly" - ( _1 ) -# 41714 "parsing/parser.ml" - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 41719 "parsing/parser.ml" - - in - ( -# 1158 "parsing/parser.mly" - ( [ x2; x1 ] ) -# 41725 "parsing/parser.ml" - : (Parsetree.expression list)) - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - } = _menhir_stack in - let xs : (Parsetree.case list) = Obj.magic xs in - let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let _1_inlined2 : (string Asttypes.loc option) = Obj.magic _1_inlined2 in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let ty : (Parsetree.core_type) = Obj.magic ty in let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.expression) = Obj.magic _1 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 48901 "parsing/parser.ml" + ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_ in + let _startpos = _startpos_label_ in + let _endpos = _endpos_ty_ in let _v = - let x2 = - let (_startpos__1_, _1_inlined2, _1_inlined1) = (_startpos__1_inlined1_, _1_inlined3, _1_inlined2) in - let _1 = - let _3 = - let xs = - let xs = -# 264 "" - ( List.rev xs ) -# 41792 "parsing/parser.ml" - in - -# 1200 "parsing/parser.mly" - ( xs ) -# 41797 "parsing/parser.ml" - - in - -# 2798 "parsing/parser.mly" - ( xs ) -# 41803 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 41814 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 41820 "parsing/parser.ml" - - in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 41840 "parsing/parser.ml" - - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 41846 "parsing/parser.ml" - - in - let x1 = - let _1 = -# 2309 "parsing/parser.mly" - ( _1 ) -# 41853 "parsing/parser.ml" + let xs = + let x = +# 3731 "parsing/parser.mly" + ( Some label, ty ) +# 48911 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" - ( _1 ) -# 41858 "parsing/parser.ml" +# 1111 "parsing/parser.mly" + ( [ x ] ) +# 48916 "parsing/parser.ml" in ( -# 1158 "parsing/parser.mly" - ( [ x2; x1 ] ) -# 41864 "parsing/parser.ml" - : (Parsetree.expression list)) +# 1119 "parsing/parser.mly" + ( xs ) +# 48922 "parsing/parser.ml" + : ((string option * Parsetree.core_type) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41874,133 +48932,47 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; MenhirLib.EngineTypes.startp = _startpos__2_; MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = xs; MenhirLib.EngineTypes.startp = _startpos_xs_; MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; } = _menhir_stack in - let _1_inlined3 : (Parsetree.expression) = Obj.magic _1_inlined3 in + let _1 : (Parsetree.core_type) = Obj.magic _1 in let _2 : unit = Obj.magic _2 in - let xs : (Parsetree.case list) = Obj.magic xs in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let xs : ((string option * Parsetree.core_type) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined3_ in + let _startpos = _startpos_xs_ in + let _endpos = _endpos__1_ in let _v = - let x2 = - let _1 = _1_inlined3 in - let _1 = -# 2309 "parsing/parser.mly" - ( _1 ) -# 41928 "parsing/parser.ml" + let xs = + let x = +# 3729 "parsing/parser.mly" + ( None, _1 ) +# 48964 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" - ( _1 ) -# 41933 "parsing/parser.ml" - - in - let x1 = - let _1 = - let _3 = - let xs = - let xs = -# 264 "" - ( List.rev xs ) -# 41943 "parsing/parser.ml" - in - -# 1200 "parsing/parser.mly" - ( xs ) -# 41948 "parsing/parser.ml" - - in - -# 2798 "parsing/parser.mly" - ( xs ) -# 41954 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 41965 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 41971 "parsing/parser.ml" - - in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 41991 "parsing/parser.ml" - - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 41997 "parsing/parser.ml" +# 1115 "parsing/parser.mly" + ( x :: xs ) +# 48969 "parsing/parser.ml" in ( -# 1158 "parsing/parser.mly" - ( [ x2; x1 ] ) -# 42003 "parsing/parser.ml" - : (Parsetree.expression list)) +# 1119 "parsing/parser.mly" + ( xs ) +# 48975 "parsing/parser.ml" + : ((string option * Parsetree.core_type) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42013,206 +48985,65 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs_inlined1; - MenhirLib.EngineTypes.startp = _startpos_xs_inlined1_; - MenhirLib.EngineTypes.endp = _endpos_xs_inlined1_; + MenhirLib.EngineTypes.semv = ty; + MenhirLib.EngineTypes.startp = _startpos_ty_; + MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined5; - MenhirLib.EngineTypes.startp = _startpos__1_inlined5_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined5_; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined4; - MenhirLib.EngineTypes.startp = _startpos__1_inlined4_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; + MenhirLib.EngineTypes.semv = label; + MenhirLib.EngineTypes.startp = _startpos_label_; + MenhirLib.EngineTypes.endp = _endpos_label_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; }; }; }; }; } = _menhir_stack in - let xs_inlined1 : (Parsetree.case list) = Obj.magic xs_inlined1 in - let _1_inlined5 : (Parsetree.attributes) = Obj.magic _1_inlined5 in - let _1_inlined4 : (string Asttypes.loc option) = Obj.magic _1_inlined4 in - let _1_inlined3 : unit = Obj.magic _1_inlined3 in + let ty : (Parsetree.core_type) = Obj.magic ty in + let _2_inlined1 : unit = Obj.magic _2_inlined1 in + let label : ( +# 785 "parsing/parser.mly" + (string) +# 49023 "parsing/parser.ml" + ) = Obj.magic label in let _2 : unit = Obj.magic _2 in - let xs : (Parsetree.case list) = Obj.magic xs in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let xs : ((string option * Parsetree.core_type) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_xs_inlined1_ in + let _startpos = _startpos_xs_ in + let _endpos = _endpos_ty_ in let _v = - let x2 = - let (_endpos_xs_, _startpos__1_, xs, _1_inlined2, _1_inlined1) = (_endpos_xs_inlined1_, _startpos__1_inlined3_, xs_inlined1, _1_inlined5, _1_inlined4) in - let _1 = - let _3 = - let xs = - let xs = -# 264 "" - ( List.rev xs ) -# 42091 "parsing/parser.ml" - in - -# 1200 "parsing/parser.mly" - ( xs ) -# 42096 "parsing/parser.ml" - - in - -# 2798 "parsing/parser.mly" - ( xs ) -# 42102 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 42113 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 42119 "parsing/parser.ml" - - in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 42139 "parsing/parser.ml" - - in - -# 2453 "parsing/parser.mly" - ( _1 ) -# 42145 "parsing/parser.ml" - - in - let x1 = - let _1 = - let _3 = - let xs = - let xs = -# 264 "" - ( List.rev xs ) -# 42155 "parsing/parser.ml" - in - -# 1200 "parsing/parser.mly" - ( xs ) -# 42160 "parsing/parser.ml" - - in - -# 2798 "parsing/parser.mly" - ( xs ) -# 42166 "parsing/parser.ml" - - in - let _endpos__3_ = _endpos_xs_ in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4114 "parsing/parser.mly" - ( _1 ) -# 42177 "parsing/parser.ml" - - in - -# 4127 "parsing/parser.mly" - ( _1, _2 ) -# 42183 "parsing/parser.ml" - - in - let _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2311 "parsing/parser.mly" - ( let loc = make_loc _sloc in - let cases = _3 in - (* There are two choices of where to put attributes: on the - Pexp_function node; on the Pfunction_cases body. We put them on the - Pexp_function node here because the compiler only uses - Pfunction_cases attributes for enabling/disabling warnings in - typechecking. For standalone function cases, we want the compiler to - respect, e.g., [@inline] attributes. - *) - let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in - mkexp_attrs ~loc:_sloc desc _2 - ) -# 42203 "parsing/parser.ml" - - in + let xs = + let x = +# 3731 "parsing/parser.mly" + ( Some label, ty ) +# 49035 "parsing/parser.ml" + in -# 2453 "parsing/parser.mly" - ( _1 ) -# 42209 "parsing/parser.ml" +# 1115 "parsing/parser.mly" + ( x :: xs ) +# 49040 "parsing/parser.ml" in ( -# 1158 "parsing/parser.mly" - ( [ x2; x1 ] ) -# 42215 "parsing/parser.ml" - : (Parsetree.expression list)) +# 1119 "parsing/parser.mly" + ( xs ) +# 49046 "parsing/parser.ml" + : ((string option * Parsetree.core_type) list)) in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42249,9 +49080,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = -# 1154 "parsing/parser.mly" +# 1142 "parsing/parser.mly" ( x :: xs ) -# 42255 "parsing/parser.ml" +# 49086 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42288,9 +49119,9 @@ module Tables = struct let _startpos = _startpos_x1_ in let _endpos = _endpos_x2_ in let _v : (Parsetree.core_type list) = -# 1158 "parsing/parser.mly" +# 1146 "parsing/parser.mly" ( [ x2; x1 ] ) -# 42294 "parsing/parser.ml" +# 49125 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42313,9 +49144,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.row_field) = -# 3701 "parsing/parser.mly" +# 3872 "parsing/parser.mly" ( _1 ) -# 42319 "parsing/parser.ml" +# 49150 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42342,9 +49173,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3703 "parsing/parser.mly" +# 3874 "parsing/parser.mly" ( Rf.inherit_ ~loc:(make_loc _sloc) _1 ) -# 42348 "parsing/parser.ml" +# 49179 "parsing/parser.ml" : (Parsetree.row_field)) in { @@ -42371,24 +49202,24 @@ module Tables = struct let _2 = # 123 "" ( None ) -# 42375 "parsing/parser.ml" +# 49206 "parsing/parser.ml" in let x = let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 42381 "parsing/parser.ml" +# 49212 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 42386 "parsing/parser.ml" +# 49217 "parsing/parser.ml" in ( -# 1175 "parsing/parser.mly" +# 1163 "parsing/parser.mly" ( [x] ) -# 42392 "parsing/parser.ml" +# 49223 "parsing/parser.ml" : (Parsetree.expression list)) in { @@ -42422,24 +49253,24 @@ module Tables = struct let _2 = # 126 "" ( Some x ) -# 42426 "parsing/parser.ml" +# 49257 "parsing/parser.ml" in let x = let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 42432 "parsing/parser.ml" +# 49263 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 42437 "parsing/parser.ml" +# 49268 "parsing/parser.ml" in ( -# 1175 "parsing/parser.mly" +# 1163 "parsing/parser.mly" ( [x] ) -# 42443 "parsing/parser.ml" +# 49274 "parsing/parser.ml" : (Parsetree.expression list)) in { @@ -42487,7 +49318,7 @@ module Tables = struct let _2 = # 123 "" ( None ) -# 42491 "parsing/parser.ml" +# 49322 "parsing/parser.ml" in let x = let _1 = @@ -42496,18 +49327,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 42500 "parsing/parser.ml" +# 49331 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 42505 "parsing/parser.ml" +# 49336 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 42511 "parsing/parser.ml" +# 49342 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -42516,22 +49347,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 42522 "parsing/parser.ml" +# 49353 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 42528 "parsing/parser.ml" +# 49359 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -42544,19 +49375,19 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 42548 "parsing/parser.ml" +# 49379 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 42554 "parsing/parser.ml" +# 49385 "parsing/parser.ml" in ( -# 1175 "parsing/parser.mly" +# 1163 "parsing/parser.mly" ( [x] ) -# 42560 "parsing/parser.ml" +# 49391 "parsing/parser.ml" : (Parsetree.expression list)) in { @@ -42611,7 +49442,7 @@ module Tables = struct let _2 = # 126 "" ( Some x ) -# 42615 "parsing/parser.ml" +# 49446 "parsing/parser.ml" in let x = let _1 = @@ -42620,18 +49451,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 42624 "parsing/parser.ml" +# 49455 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 42629 "parsing/parser.ml" +# 49460 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 42635 "parsing/parser.ml" +# 49466 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -42640,22 +49471,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 42646 "parsing/parser.ml" +# 49477 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 42652 "parsing/parser.ml" +# 49483 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -42668,19 +49499,19 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 42672 "parsing/parser.ml" +# 49503 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 42678 "parsing/parser.ml" +# 49509 "parsing/parser.ml" in ( -# 1175 "parsing/parser.mly" +# 1163 "parsing/parser.mly" ( [x] ) -# 42684 "parsing/parser.ml" +# 49515 "parsing/parser.ml" : (Parsetree.expression list)) in { @@ -42720,20 +49551,20 @@ module Tables = struct let _v = let x = let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 42726 "parsing/parser.ml" +# 49557 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 42731 "parsing/parser.ml" +# 49562 "parsing/parser.ml" in ( -# 1179 "parsing/parser.mly" +# 1167 "parsing/parser.mly" ( x :: xs ) -# 42737 "parsing/parser.ml" +# 49568 "parsing/parser.ml" : (Parsetree.expression list)) in { @@ -42800,18 +49631,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 42804 "parsing/parser.ml" +# 49635 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 42809 "parsing/parser.ml" +# 49640 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 42815 "parsing/parser.ml" +# 49646 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -42820,22 +49651,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 42826 "parsing/parser.ml" +# 49657 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 42832 "parsing/parser.ml" +# 49663 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -42848,19 +49679,19 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 42852 "parsing/parser.ml" +# 49683 "parsing/parser.ml" in -# 2453 "parsing/parser.mly" +# 2440 "parsing/parser.mly" ( _1 ) -# 42858 "parsing/parser.ml" +# 49689 "parsing/parser.ml" in ( -# 1179 "parsing/parser.mly" +# 1167 "parsing/parser.mly" ( x :: xs ) -# 42864 "parsing/parser.ml" +# 49695 "parsing/parser.ml" : (Parsetree.expression list)) in { @@ -42887,9 +49718,9 @@ module Tables = struct } = _menhir_stack in let oe : (Parsetree.expression option) = Obj.magic oe in let _1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 42893 "parsing/parser.ml" +# 49724 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -42898,26 +49729,26 @@ module Tables = struct let _2 = # 123 "" ( None ) -# 42902 "parsing/parser.ml" +# 49733 "parsing/parser.ml" in let x = let label = let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 42909 "parsing/parser.ml" +# 49740 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42917 "parsing/parser.ml" +# 49748 "parsing/parser.ml" in -# 2861 "parsing/parser.mly" +# 2921 "parsing/parser.mly" ( let label, e = match oe with | None -> @@ -42927,13 +49758,13 @@ module Tables = struct label, e in label, e ) -# 42931 "parsing/parser.ml" +# 49762 "parsing/parser.ml" in ( -# 1175 "parsing/parser.mly" +# 1163 "parsing/parser.mly" ( [x] ) -# 42937 "parsing/parser.ml" +# 49768 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Parsetree.expression) list)) in { @@ -42967,9 +49798,9 @@ module Tables = struct let x : unit = Obj.magic x in let oe : (Parsetree.expression option) = Obj.magic oe in let _1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 42973 "parsing/parser.ml" +# 49804 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -42978,26 +49809,26 @@ module Tables = struct let _2 = # 126 "" ( Some x ) -# 42982 "parsing/parser.ml" +# 49813 "parsing/parser.ml" in let x = let label = let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 42989 "parsing/parser.ml" +# 49820 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42997 "parsing/parser.ml" +# 49828 "parsing/parser.ml" in -# 2861 "parsing/parser.mly" +# 2921 "parsing/parser.mly" ( let label, e = match oe with | None -> @@ -43007,13 +49838,13 @@ module Tables = struct label, e in label, e ) -# 43011 "parsing/parser.ml" +# 49842 "parsing/parser.ml" in ( -# 1175 "parsing/parser.mly" +# 1163 "parsing/parser.mly" ( [x] ) -# 43017 "parsing/parser.ml" +# 49848 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Parsetree.expression) list)) in { @@ -43054,9 +49885,9 @@ module Tables = struct let _2 : unit = Obj.magic _2 in let oe : (Parsetree.expression option) = Obj.magic oe in let _1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 43060 "parsing/parser.ml" +# 49891 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -43065,21 +49896,21 @@ module Tables = struct let x = let label = let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 43071 "parsing/parser.ml" +# 49902 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43079 "parsing/parser.ml" +# 49910 "parsing/parser.ml" in -# 2861 "parsing/parser.mly" +# 2921 "parsing/parser.mly" ( let label, e = match oe with | None -> @@ -43089,13 +49920,13 @@ module Tables = struct label, e in label, e ) -# 43093 "parsing/parser.ml" +# 49924 "parsing/parser.ml" in ( -# 1179 "parsing/parser.mly" +# 1167 "parsing/parser.mly" ( x :: xs ) -# 43099 "parsing/parser.ml" +# 49930 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Parsetree.expression) list)) in { @@ -43122,12 +49953,12 @@ module Tables = struct let _2 = # 123 "" ( None ) -# 43126 "parsing/parser.ml" +# 49957 "parsing/parser.ml" in ( -# 1175 "parsing/parser.mly" +# 1163 "parsing/parser.mly" ( [x] ) -# 43131 "parsing/parser.ml" +# 49962 "parsing/parser.ml" : (Parsetree.pattern list)) in { @@ -43163,13 +49994,13 @@ module Tables = struct # 126 "" ( Some x ) -# 43167 "parsing/parser.ml" +# 49998 "parsing/parser.ml" in ( -# 1175 "parsing/parser.mly" +# 1163 "parsing/parser.mly" ( [x] ) -# 43173 "parsing/parser.ml" +# 50004 "parsing/parser.ml" : (Parsetree.pattern list)) in { @@ -43207,9 +50038,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : (Parsetree.pattern list) = -# 1179 "parsing/parser.mly" +# 1167 "parsing/parser.mly" ( x :: xs ) -# 43213 "parsing/parser.ml" +# 50044 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43249,7 +50080,7 @@ module Tables = struct let _2 = # 123 "" ( None ) -# 43253 "parsing/parser.ml" +# 50084 "parsing/parser.ml" in let x = let label = @@ -43257,9 +50088,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43263 "parsing/parser.ml" +# 50094 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -43267,7 +50098,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 2844 "parsing/parser.mly" +# 2904 "parsing/parser.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -43277,13 +50108,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 43281 "parsing/parser.ml" +# 50112 "parsing/parser.ml" in ( -# 1175 "parsing/parser.mly" +# 1163 "parsing/parser.mly" ( [x] ) -# 43287 "parsing/parser.ml" +# 50118 "parsing/parser.ml" : ((Longident.t Asttypes.loc * Parsetree.expression) list)) in { @@ -43331,7 +50162,7 @@ module Tables = struct let _2 = # 126 "" ( Some x ) -# 43335 "parsing/parser.ml" +# 50166 "parsing/parser.ml" in let x = let label = @@ -43339,9 +50170,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43345 "parsing/parser.ml" +# 50176 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -43349,7 +50180,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 2844 "parsing/parser.mly" +# 2904 "parsing/parser.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -43359,13 +50190,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 43363 "parsing/parser.ml" +# 50194 "parsing/parser.ml" in ( -# 1175 "parsing/parser.mly" +# 1163 "parsing/parser.mly" ( [x] ) -# 43369 "parsing/parser.ml" +# 50200 "parsing/parser.ml" : ((Longident.t Asttypes.loc * Parsetree.expression) list)) in { @@ -43423,9 +50254,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43429 "parsing/parser.ml" +# 50260 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -43433,7 +50264,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 2844 "parsing/parser.mly" +# 2904 "parsing/parser.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -43443,13 +50274,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 43447 "parsing/parser.ml" +# 50278 "parsing/parser.ml" in ( -# 1179 "parsing/parser.mly" +# 1167 "parsing/parser.mly" ( x :: xs ) -# 43453 "parsing/parser.ml" +# 50284 "parsing/parser.ml" : ((Longident.t Asttypes.loc * Parsetree.expression) list)) in { @@ -43474,14 +50305,14 @@ module Tables = struct let _endpos = _endpos__1_ in let _v = let _1 = -# 2309 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( _1 ) -# 43480 "parsing/parser.ml" +# 50311 "parsing/parser.ml" in ( -# 2347 "parsing/parser.mly" +# 2333 "parsing/parser.mly" ( _1 ) -# 43485 "parsing/parser.ml" +# 50316 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -43532,18 +50363,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 43536 "parsing/parser.ml" +# 50367 "parsing/parser.ml" in -# 1200 "parsing/parser.mly" +# 1188 "parsing/parser.mly" ( xs ) -# 43541 "parsing/parser.ml" +# 50372 "parsing/parser.ml" in -# 2798 "parsing/parser.mly" +# 2783 "parsing/parser.mly" ( xs ) -# 43547 "parsing/parser.ml" +# 50378 "parsing/parser.ml" in let _endpos__3_ = _endpos_xs_ in @@ -43552,22 +50383,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 43558 "parsing/parser.ml" +# 50389 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 43564 "parsing/parser.ml" +# 50395 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2311 "parsing/parser.mly" +# 2299 "parsing/parser.mly" ( let loc = make_loc _sloc in let cases = _3 in (* There are two choices of where to put attributes: on the @@ -43580,13 +50411,13 @@ module Tables = struct let desc = mkfunction [] None (Pfunction_cases (cases, loc, [])) in mkexp_attrs ~loc:_sloc desc _2 ) -# 43584 "parsing/parser.ml" +# 50415 "parsing/parser.ml" in ( -# 2347 "parsing/parser.mly" +# 2333 "parsing/parser.mly" ( _1 ) -# 43590 "parsing/parser.ml" +# 50421 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -43656,18 +50487,18 @@ module Tables = struct let attrs = let _1 = _1_inlined4 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 43662 "parsing/parser.ml" +# 50493 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined4_ in let attrs2 = let _1 = _1_inlined3 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 43671 "parsing/parser.ml" +# 50502 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -43677,17 +50508,17 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43683 "parsing/parser.ml" +# 50514 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 43691 "parsing/parser.ml" +# 50522 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in @@ -43695,14 +50526,14 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3317 "parsing/parser.mly" +# 3440 "parsing/parser.mly" ( let vars, args, res = vars_args_res in let loc = make_loc (_startpos, _endpos_attrs2_) in let docs = symbol_docs _sloc in - Te.mk_exception ~attrs + Te.mk_exception ~attrs ~loc (Te.decl id ~vars ~args ?res ~attrs:(attrs1 @ attrs2) ~loc ~docs) , ext ) -# 43706 "parsing/parser.ml" +# 50537 "parsing/parser.ml" : (Parsetree.type_exception * string Asttypes.loc option)) in { @@ -43730,21 +50561,21 @@ module Tables = struct let _1 = # 271 "" ( List.flatten xss ) -# 43734 "parsing/parser.ml" +# 50565 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 977 "parsing/parser.mly" +# 965 "parsing/parser.mly" ( extra_sig _startpos _endpos _1 ) -# 43742 "parsing/parser.ml" +# 50573 "parsing/parser.ml" in ( -# 1755 "parsing/parser.mly" +# 1743 "parsing/parser.mly" ( _1 ) -# 43748 "parsing/parser.ml" +# 50579 "parsing/parser.ml" : (Parsetree.signature)) in { @@ -43778,9 +50609,9 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 43784 "parsing/parser.ml" +# 50615 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -43788,10 +50619,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1770 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mksig ~loc:_sloc (Psig_extension (_1, (add_docs_attrs docs _2))) ) -# 43795 "parsing/parser.ml" +# 50626 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -43817,23 +50648,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1774 "parsing/parser.mly" +# 1762 "parsing/parser.mly" ( Psig_attribute _1 ) -# 43823 "parsing/parser.ml" +# 50654 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1025 "parsing/parser.mly" +# 1013 "parsing/parser.mly" ( mksig ~loc:_sloc _1 ) -# 43831 "parsing/parser.ml" +# 50662 "parsing/parser.ml" in ( -# 1776 "parsing/parser.mly" +# 1764 "parsing/parser.mly" ( _1 ) -# 43837 "parsing/parser.ml" +# 50668 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -43859,23 +50690,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1779 "parsing/parser.mly" +# 1767 "parsing/parser.mly" ( psig_value _1 ) -# 43865 "parsing/parser.ml" +# 50696 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 43873 "parsing/parser.ml" +# 50704 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 43879 "parsing/parser.ml" +# 50710 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -43901,23 +50732,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1781 "parsing/parser.mly" +# 1769 "parsing/parser.mly" ( psig_value _1 ) -# 43907 "parsing/parser.ml" +# 50738 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 43915 "parsing/parser.ml" +# 50746 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 43921 "parsing/parser.ml" +# 50752 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -43954,26 +50785,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1236 "parsing/parser.mly" +# 1224 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 43960 "parsing/parser.ml" +# 50791 "parsing/parser.ml" in -# 3138 "parsing/parser.mly" +# 3255 "parsing/parser.mly" ( _1 ) -# 43965 "parsing/parser.ml" +# 50796 "parsing/parser.ml" in -# 3121 "parsing/parser.mly" +# 3238 "parsing/parser.mly" ( _1 ) -# 43971 "parsing/parser.ml" +# 50802 "parsing/parser.ml" in -# 1783 "parsing/parser.mly" +# 1771 "parsing/parser.mly" ( psig_type _1 ) -# 43977 "parsing/parser.ml" +# 50808 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -43981,15 +50812,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 43987 "parsing/parser.ml" +# 50818 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 43993 "parsing/parser.ml" +# 50824 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -44026,26 +50857,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1236 "parsing/parser.mly" +# 1224 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 44032 "parsing/parser.ml" +# 50863 "parsing/parser.ml" in -# 3138 "parsing/parser.mly" +# 3255 "parsing/parser.mly" ( _1 ) -# 44037 "parsing/parser.ml" +# 50868 "parsing/parser.ml" in -# 3126 "parsing/parser.mly" +# 3243 "parsing/parser.mly" ( _1 ) -# 44043 "parsing/parser.ml" +# 50874 "parsing/parser.ml" in -# 1785 "parsing/parser.mly" +# 1773 "parsing/parser.mly" ( psig_typesubst _1 ) -# 44049 "parsing/parser.ml" +# 50880 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -44053,15 +50884,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 44059 "parsing/parser.ml" +# 50890 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 44065 "parsing/parser.ml" +# 50896 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -44148,16 +50979,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 44154 "parsing/parser.ml" +# 50985 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let cs = -# 1228 "parsing/parser.mly" +# 1216 "parsing/parser.mly" ( List.rev xs ) -# 44161 "parsing/parser.ml" +# 50992 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -44165,46 +50996,47 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44171 "parsing/parser.ml" +# 51002 "parsing/parser.ml" in let _4 = -# 3955 "parsing/parser.mly" +# 4126 "parsing/parser.mly" ( Recursive ) -# 44177 "parsing/parser.ml" +# 51008 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 44184 "parsing/parser.ml" +# 51015 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3391 "parsing/parser.mly" +# 3514 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in - Te.mk tid cs ~params ~priv ~attrs ~docs, + let loc = make_loc _sloc in + Te.mk tid cs ~params ~priv ~attrs ~docs ~loc, ext ) -# 44196 "parsing/parser.ml" +# 51028 "parsing/parser.ml" in -# 3378 "parsing/parser.mly" +# 3501 "parsing/parser.mly" ( _1 ) -# 44202 "parsing/parser.ml" +# 51034 "parsing/parser.ml" in -# 1787 "parsing/parser.mly" +# 1775 "parsing/parser.mly" ( psig_typext _1 ) -# 44208 "parsing/parser.ml" +# 51040 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -44212,15 +51044,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 44218 "parsing/parser.ml" +# 51050 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 44224 "parsing/parser.ml" +# 51056 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -44314,16 +51146,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 44320 "parsing/parser.ml" +# 51152 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in let cs = -# 1228 "parsing/parser.mly" +# 1216 "parsing/parser.mly" ( List.rev xs ) -# 44327 "parsing/parser.ml" +# 51159 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -44331,9 +51163,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44337 "parsing/parser.ml" +# 51169 "parsing/parser.ml" in let _4 = @@ -44342,41 +51174,42 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 3957 "parsing/parser.mly" +# 4128 "parsing/parser.mly" ( not_expecting _loc "nonrec flag" ) -# 44348 "parsing/parser.ml" +# 51180 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 44356 "parsing/parser.ml" +# 51188 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3391 "parsing/parser.mly" +# 3514 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in - Te.mk tid cs ~params ~priv ~attrs ~docs, + let loc = make_loc _sloc in + Te.mk tid cs ~params ~priv ~attrs ~docs ~loc, ext ) -# 44368 "parsing/parser.ml" +# 51201 "parsing/parser.ml" in -# 3378 "parsing/parser.mly" +# 3501 "parsing/parser.mly" ( _1 ) -# 44374 "parsing/parser.ml" +# 51207 "parsing/parser.ml" in -# 1787 "parsing/parser.mly" +# 1775 "parsing/parser.mly" ( psig_typext _1 ) -# 44380 "parsing/parser.ml" +# 51213 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -44384,15 +51217,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 44390 "parsing/parser.ml" +# 51223 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 44396 "parsing/parser.ml" +# 51229 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -44418,23 +51251,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1789 "parsing/parser.mly" +# 1777 "parsing/parser.mly" ( psig_exception _1 ) -# 44424 "parsing/parser.ml" +# 51257 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 44432 "parsing/parser.ml" +# 51265 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 44438 "parsing/parser.ml" +# 51271 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -44499,9 +51332,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 44505 "parsing/parser.ml" +# 51338 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -44511,37 +51344,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44517 "parsing/parser.ml" +# 51350 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 44525 "parsing/parser.ml" +# 51358 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1820 "parsing/parser.mly" +# 1808 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Md.mk name body ~attrs ~loc ~docs, ext ) -# 44539 "parsing/parser.ml" +# 51372 "parsing/parser.ml" in -# 1791 "parsing/parser.mly" +# 1779 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_module body, ext) ) -# 44545 "parsing/parser.ml" +# 51378 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -44549,15 +51382,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 44555 "parsing/parser.ml" +# 51388 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 44561 "parsing/parser.ml" +# 51394 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -44629,9 +51462,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 44635 "parsing/parser.ml" +# 51468 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -44642,9 +51475,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44648 "parsing/parser.ml" +# 51481 "parsing/parser.ml" in let (_endpos_id_, _startpos_id_) = (_endpos__1_, _startpos__1_) in @@ -44652,9 +51485,9 @@ module Tables = struct let _symbolstartpos = _startpos_id_ in let _sloc = (_symbolstartpos, _endpos) in -# 1859 "parsing/parser.mly" +# 1847 "parsing/parser.mly" ( Mty.alias ~loc:(make_loc _sloc) id ) -# 44658 "parsing/parser.ml" +# 51491 "parsing/parser.ml" in let name = @@ -44663,37 +51496,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44669 "parsing/parser.ml" +# 51502 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 44677 "parsing/parser.ml" +# 51510 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1850 "parsing/parser.mly" +# 1838 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Md.mk name body ~attrs ~loc ~docs, ext ) -# 44691 "parsing/parser.ml" +# 51524 "parsing/parser.ml" in -# 1793 "parsing/parser.mly" +# 1781 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_module body, ext) ) -# 44697 "parsing/parser.ml" +# 51530 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -44701,15 +51534,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 44707 "parsing/parser.ml" +# 51540 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 44713 "parsing/parser.ml" +# 51546 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -44735,23 +51568,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1795 "parsing/parser.mly" +# 1783 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_modsubst body, ext) ) -# 44741 "parsing/parser.ml" +# 51574 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 44749 "parsing/parser.ml" +# 51582 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 44755 "parsing/parser.ml" +# 51588 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -44839,9 +51672,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 44845 "parsing/parser.ml" +# 51678 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -44851,49 +51684,49 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44857 "parsing/parser.ml" +# 51690 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 44865 "parsing/parser.ml" +# 51698 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1893 "parsing/parser.mly" +# 1881 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in ext, Md.mk name mty ~attrs ~loc ~docs ) -# 44879 "parsing/parser.ml" +# 51712 "parsing/parser.ml" in -# 1236 "parsing/parser.mly" +# 1224 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 44885 "parsing/parser.ml" +# 51718 "parsing/parser.ml" in -# 1882 "parsing/parser.mly" +# 1870 "parsing/parser.mly" ( _1 ) -# 44891 "parsing/parser.ml" +# 51724 "parsing/parser.ml" in -# 1797 "parsing/parser.mly" +# 1785 "parsing/parser.mly" ( let (ext, l) = _1 in (Psig_recmodule l, ext) ) -# 44897 "parsing/parser.ml" +# 51730 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -44901,15 +51734,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 44907 "parsing/parser.ml" +# 51740 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 44913 "parsing/parser.ml" +# 51746 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -44935,23 +51768,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1799 "parsing/parser.mly" +# 1787 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_modtype body, ext) ) -# 44941 "parsing/parser.ml" +# 51774 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 44949 "parsing/parser.ml" +# 51782 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 44955 "parsing/parser.ml" +# 51788 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -44977,23 +51810,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1801 "parsing/parser.mly" +# 1789 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_modtypesubst body, ext) ) -# 44983 "parsing/parser.ml" +# 51816 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 44991 "parsing/parser.ml" +# 51824 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 44997 "parsing/parser.ml" +# 51830 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -45019,23 +51852,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1803 "parsing/parser.mly" +# 1791 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_open body, ext) ) -# 45025 "parsing/parser.ml" +# 51858 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 45033 "parsing/parser.ml" +# 51866 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 45039 "parsing/parser.ml" +# 51872 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -45093,38 +51926,38 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 45099 "parsing/parser.ml" +# 51932 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 45108 "parsing/parser.ml" +# 51941 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1645 "parsing/parser.mly" +# 1633 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Incl.mk thing ~attrs ~loc ~docs, ext ) -# 45122 "parsing/parser.ml" +# 51955 "parsing/parser.ml" in -# 1805 "parsing/parser.mly" +# 1793 "parsing/parser.mly" ( psig_include _1 ) -# 45128 "parsing/parser.ml" +# 51961 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined2_ in @@ -45132,15 +51965,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 45138 "parsing/parser.ml" +# 51971 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 45144 "parsing/parser.ml" +# 51977 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -45218,9 +52051,9 @@ module Tables = struct let cty : (Parsetree.class_type) = Obj.magic cty in let _7 : unit = Obj.magic _7 in let _1_inlined2 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 45224 "parsing/parser.ml" +# 52057 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -45239,9 +52072,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 45245 "parsing/parser.ml" +# 52078 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -45251,24 +52084,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45257 "parsing/parser.ml" +# 52090 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 45265 "parsing/parser.ml" +# 52098 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2240 "parsing/parser.mly" +# 2228 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -45276,25 +52109,25 @@ module Tables = struct ext, Ci.mk id cty ~virt ~params ~attrs ~loc ~docs ) -# 45280 "parsing/parser.ml" +# 52113 "parsing/parser.ml" in -# 1236 "parsing/parser.mly" +# 1224 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 45286 "parsing/parser.ml" +# 52119 "parsing/parser.ml" in -# 2228 "parsing/parser.mly" +# 2216 "parsing/parser.mly" ( _1 ) -# 45292 "parsing/parser.ml" +# 52125 "parsing/parser.ml" in -# 1807 "parsing/parser.mly" +# 1795 "parsing/parser.mly" ( let (ext, l) = _1 in (Psig_class l, ext) ) -# 45298 "parsing/parser.ml" +# 52131 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -45302,15 +52135,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 45308 "parsing/parser.ml" +# 52141 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 45314 "parsing/parser.ml" +# 52147 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -45336,23 +52169,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1809 "parsing/parser.mly" +# 1797 "parsing/parser.mly" ( let (ext, l) = _1 in (Psig_class_type l, ext) ) -# 45342 "parsing/parser.ml" +# 52175 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1042 "parsing/parser.mly" +# 1030 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 45350 "parsing/parser.ml" +# 52183 "parsing/parser.ml" in ( -# 1811 "parsing/parser.mly" +# 1799 "parsing/parser.mly" ( _1 ) -# 45356 "parsing/parser.ml" +# 52189 "parsing/parser.ml" : (Parsetree.signature_item)) in { @@ -45376,9 +52209,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 3780 "parsing/parser.mly" +# 3951 "parsing/parser.mly" ( _1 ) -# 45382 "parsing/parser.ml" +# 52215 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45403,9 +52236,9 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 783 "parsing/parser.mly" +# 771 "parsing/parser.mly" (string * char option) -# 45409 "parsing/parser.ml" +# 52242 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -45416,10 +52249,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3781 "parsing/parser.mly" +# 3952 "parsing/parser.mly" ( let (n, m) = _2 in mkconst ~loc:_sloc (Pconst_integer("-" ^ n, m)) ) -# 45423 "parsing/parser.ml" +# 52256 "parsing/parser.ml" : (Parsetree.constant)) in { @@ -45445,9 +52278,9 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 762 "parsing/parser.mly" +# 750 "parsing/parser.mly" (string * char option) -# 45451 "parsing/parser.ml" +# 52284 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -45458,10 +52291,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3783 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( let (f, m) = _2 in mkconst ~loc:_sloc (Pconst_float("-" ^ f, m)) ) -# 45465 "parsing/parser.ml" +# 52298 "parsing/parser.ml" : (Parsetree.constant)) in { @@ -45487,9 +52320,9 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 783 "parsing/parser.mly" +# 771 "parsing/parser.mly" (string * char option) -# 45493 "parsing/parser.ml" +# 52326 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -45500,10 +52333,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3785 "parsing/parser.mly" +# 3956 "parsing/parser.mly" ( let (n, m) = _2 in mkconst ~loc:_sloc (Pconst_integer (n, m)) ) -# 45507 "parsing/parser.ml" +# 52340 "parsing/parser.ml" : (Parsetree.constant)) in { @@ -45529,9 +52362,9 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 762 "parsing/parser.mly" +# 750 "parsing/parser.mly" (string * char option) -# 45535 "parsing/parser.ml" +# 52368 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -45542,10 +52375,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3787 "parsing/parser.mly" +# 3958 "parsing/parser.mly" ( let (f, m) = _2 in mkconst ~loc:_sloc (Pconst_float(f, m)) ) -# 45549 "parsing/parser.ml" +# 52382 "parsing/parser.ml" : (Parsetree.constant)) in { @@ -45588,18 +52421,18 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 3050 "parsing/parser.mly" +# 3167 "parsing/parser.mly" ( let fields, closed = _1 in let closed = match closed with Some () -> Open | None -> Closed in fields, closed ) -# 45596 "parsing/parser.ml" +# 52429 "parsing/parser.ml" in -# 3021 "parsing/parser.mly" +# 3082 "parsing/parser.mly" ( let (fields, closed) = _2 in Ppat_record(fields, closed) ) -# 45603 "parsing/parser.ml" +# 52436 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -45607,15 +52440,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45613 "parsing/parser.ml" +# 52446 "parsing/parser.ml" in ( -# 3035 "parsing/parser.mly" +# 3096 "parsing/parser.mly" ( _1 ) -# 45619 "parsing/parser.ml" +# 52452 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -45658,19 +52491,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 3050 "parsing/parser.mly" +# 3167 "parsing/parser.mly" ( let fields, closed = _1 in let closed = match closed with Some () -> Open | None -> Closed in fields, closed ) -# 45666 "parsing/parser.ml" +# 52499 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3024 "parsing/parser.mly" +# 3085 "parsing/parser.mly" ( unclosed "{" _loc__1_ "}" _loc__3_ ) -# 45674 "parsing/parser.ml" +# 52507 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -45678,15 +52511,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45684 "parsing/parser.ml" +# 52517 "parsing/parser.ml" in ( -# 3035 "parsing/parser.mly" +# 3096 "parsing/parser.mly" ( _1 ) -# 45690 "parsing/parser.ml" +# 52523 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -45727,15 +52560,15 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3044 "parsing/parser.mly" +# 3161 "parsing/parser.mly" ( ps ) -# 45733 "parsing/parser.ml" +# 52566 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3026 "parsing/parser.mly" +# 3087 "parsing/parser.mly" ( fst (mktailpat _loc__3_ _2) ) -# 45739 "parsing/parser.ml" +# 52572 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -45743,15 +52576,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45749 "parsing/parser.ml" +# 52582 "parsing/parser.ml" in ( -# 3035 "parsing/parser.mly" +# 3096 "parsing/parser.mly" ( _1 ) -# 45755 "parsing/parser.ml" +# 52588 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -45792,16 +52625,16 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3044 "parsing/parser.mly" +# 3161 "parsing/parser.mly" ( ps ) -# 45798 "parsing/parser.ml" +# 52631 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3028 "parsing/parser.mly" +# 3089 "parsing/parser.mly" ( unclosed "[" _loc__1_ "]" _loc__3_ ) -# 45805 "parsing/parser.ml" +# 52638 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -45809,15 +52642,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45815 "parsing/parser.ml" +# 52648 "parsing/parser.ml" in ( -# 3035 "parsing/parser.mly" +# 3096 "parsing/parser.mly" ( _1 ) -# 45821 "parsing/parser.ml" +# 52654 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -45858,14 +52691,14 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3044 "parsing/parser.mly" +# 3161 "parsing/parser.mly" ( ps ) -# 45864 "parsing/parser.ml" +# 52697 "parsing/parser.ml" in -# 3030 "parsing/parser.mly" +# 3091 "parsing/parser.mly" ( Ppat_array _2 ) -# 45869 "parsing/parser.ml" +# 52702 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -45873,15 +52706,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45879 "parsing/parser.ml" +# 52712 "parsing/parser.ml" in ( -# 3035 "parsing/parser.mly" +# 3096 "parsing/parser.mly" ( _1 ) -# 45885 "parsing/parser.ml" +# 52718 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -45914,24 +52747,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3032 "parsing/parser.mly" +# 3093 "parsing/parser.mly" ( Ppat_array [] ) -# 45920 "parsing/parser.ml" +# 52753 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45929 "parsing/parser.ml" +# 52762 "parsing/parser.ml" in ( -# 3035 "parsing/parser.mly" +# 3096 "parsing/parser.mly" ( _1 ) -# 45935 "parsing/parser.ml" +# 52768 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -45972,16 +52805,16 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3044 "parsing/parser.mly" +# 3161 "parsing/parser.mly" ( ps ) -# 45978 "parsing/parser.ml" +# 52811 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3034 "parsing/parser.mly" +# 3095 "parsing/parser.mly" ( unclosed "[|" _loc__1_ "|]" _loc__3_ ) -# 45985 "parsing/parser.ml" +# 52818 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -45989,15 +52822,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45995 "parsing/parser.ml" +# 52828 "parsing/parser.ml" in ( -# 3035 "parsing/parser.mly" +# 3096 "parsing/parser.mly" ( _1 ) -# 46001 "parsing/parser.ml" +# 52834 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -46039,9 +52872,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2515 "parsing/parser.mly" +# 2502 "parsing/parser.mly" ( reloc_exp ~loc:_sloc _2 ) -# 46045 "parsing/parser.ml" +# 52878 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -46082,9 +52915,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 2517 "parsing/parser.mly" +# 2504 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 46088 "parsing/parser.ml" +# 52921 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -46133,9 +52966,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2519 "parsing/parser.mly" +# 2506 "parsing/parser.mly" ( mkexp_constraint ~loc:_sloc _2 _3 ) -# 46139 "parsing/parser.ml" +# 52972 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -46189,14 +53022,14 @@ module Tables = struct let _v = let _1 = let r = -# 2520 "parsing/parser.mly" +# 2507 "parsing/parser.mly" ( None ) -# 46195 "parsing/parser.ml" +# 53028 "parsing/parser.ml" in -# 2401 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 46200 "parsing/parser.ml" +# 53033 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -46204,9 +53037,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2521 "parsing/parser.mly" +# 2508 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 46210 "parsing/parser.ml" +# 53043 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -46260,14 +53093,14 @@ module Tables = struct let _v = let _1 = let r = -# 2520 "parsing/parser.mly" +# 2507 "parsing/parser.mly" ( None ) -# 46266 "parsing/parser.ml" +# 53099 "parsing/parser.ml" in -# 2403 "parsing/parser.mly" +# 2389 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 46271 "parsing/parser.ml" +# 53104 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -46275,9 +53108,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2521 "parsing/parser.mly" +# 2508 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 46281 "parsing/parser.ml" +# 53114 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -46331,14 +53164,14 @@ module Tables = struct let _v = let _1 = let r = -# 2520 "parsing/parser.mly" +# 2507 "parsing/parser.mly" ( None ) -# 46337 "parsing/parser.ml" +# 53170 "parsing/parser.ml" in -# 2405 "parsing/parser.mly" +# 2391 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 46342 "parsing/parser.ml" +# 53175 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -46346,9 +53179,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2521 "parsing/parser.mly" +# 2508 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 46352 "parsing/parser.ml" +# 53185 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -46395,9 +53228,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 46401 "parsing/parser.ml" +# 53234 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -46406,31 +53239,31 @@ module Tables = struct let _v = let _1 = let r = -# 2522 "parsing/parser.mly" +# 2509 "parsing/parser.mly" ( None ) -# 46412 "parsing/parser.ml" +# 53245 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 46417 "parsing/parser.ml" +# 53250 "parsing/parser.ml" in let d = let _1 = # 123 "" ( None ) -# 46423 "parsing/parser.ml" +# 53256 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 46428 "parsing/parser.ml" +# 53261 "parsing/parser.ml" in -# 2401 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 46434 "parsing/parser.ml" +# 53267 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -46438,9 +53271,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2523 "parsing/parser.mly" +# 2510 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 46444 "parsing/parser.ml" +# 53277 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -46499,9 +53332,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 46505 "parsing/parser.ml" +# 53338 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -46512,39 +53345,39 @@ module Tables = struct let _v = let _1 = let r = -# 2522 "parsing/parser.mly" +# 2509 "parsing/parser.mly" ( None ) -# 46518 "parsing/parser.ml" +# 53351 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 46523 "parsing/parser.ml" +# 53356 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" (_2) -# 46531 "parsing/parser.ml" +# 53364 "parsing/parser.ml" in # 126 "" ( Some x ) -# 46536 "parsing/parser.ml" +# 53369 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 46542 "parsing/parser.ml" +# 53375 "parsing/parser.ml" in -# 2401 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 46548 "parsing/parser.ml" +# 53381 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -46552,9 +53385,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2523 "parsing/parser.mly" +# 2510 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 46558 "parsing/parser.ml" +# 53391 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -46601,9 +53434,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 46607 "parsing/parser.ml" +# 53440 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -46612,31 +53445,31 @@ module Tables = struct let _v = let _1 = let r = -# 2522 "parsing/parser.mly" +# 2509 "parsing/parser.mly" ( None ) -# 46618 "parsing/parser.ml" +# 53451 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 46623 "parsing/parser.ml" +# 53456 "parsing/parser.ml" in let d = let _1 = # 123 "" ( None ) -# 46629 "parsing/parser.ml" +# 53462 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 46634 "parsing/parser.ml" +# 53467 "parsing/parser.ml" in -# 2403 "parsing/parser.mly" +# 2389 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 46640 "parsing/parser.ml" +# 53473 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -46644,9 +53477,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2523 "parsing/parser.mly" +# 2510 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 46650 "parsing/parser.ml" +# 53483 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -46705,9 +53538,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 46711 "parsing/parser.ml" +# 53544 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -46718,39 +53551,39 @@ module Tables = struct let _v = let _1 = let r = -# 2522 "parsing/parser.mly" +# 2509 "parsing/parser.mly" ( None ) -# 46724 "parsing/parser.ml" +# 53557 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 46729 "parsing/parser.ml" +# 53562 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" (_2) -# 46737 "parsing/parser.ml" +# 53570 "parsing/parser.ml" in # 126 "" ( Some x ) -# 46742 "parsing/parser.ml" +# 53575 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 46748 "parsing/parser.ml" +# 53581 "parsing/parser.ml" in -# 2403 "parsing/parser.mly" +# 2389 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 46754 "parsing/parser.ml" +# 53587 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -46758,9 +53591,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2523 "parsing/parser.mly" +# 2510 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 46764 "parsing/parser.ml" +# 53597 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -46807,9 +53640,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 46813 "parsing/parser.ml" +# 53646 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -46818,31 +53651,31 @@ module Tables = struct let _v = let _1 = let r = -# 2522 "parsing/parser.mly" +# 2509 "parsing/parser.mly" ( None ) -# 46824 "parsing/parser.ml" +# 53657 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 46829 "parsing/parser.ml" +# 53662 "parsing/parser.ml" in let d = let _1 = # 123 "" ( None ) -# 46835 "parsing/parser.ml" +# 53668 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 46840 "parsing/parser.ml" +# 53673 "parsing/parser.ml" in -# 2405 "parsing/parser.mly" +# 2391 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 46846 "parsing/parser.ml" +# 53679 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -46850,9 +53683,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2523 "parsing/parser.mly" +# 2510 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 46856 "parsing/parser.ml" +# 53689 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -46911,9 +53744,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 46917 "parsing/parser.ml" +# 53750 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -46924,39 +53757,39 @@ module Tables = struct let _v = let _1 = let r = -# 2522 "parsing/parser.mly" +# 2509 "parsing/parser.mly" ( None ) -# 46930 "parsing/parser.ml" +# 53763 "parsing/parser.ml" in let i = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 46935 "parsing/parser.ml" +# 53768 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" (_2) -# 46943 "parsing/parser.ml" +# 53776 "parsing/parser.ml" in # 126 "" ( Some x ) -# 46948 "parsing/parser.ml" +# 53781 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 46954 "parsing/parser.ml" +# 53787 "parsing/parser.ml" in -# 2405 "parsing/parser.mly" +# 2391 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 46960 "parsing/parser.ml" +# 53793 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -46964,9 +53797,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2523 "parsing/parser.mly" +# 2510 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 46970 "parsing/parser.ml" +# 53803 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47022,15 +53855,15 @@ module Tables = struct let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2410 "parsing/parser.mly" +# 2396 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Paren _loc__e_ ) -# 47028 "parsing/parser.ml" +# 53861 "parsing/parser.ml" in ( -# 2524 "parsing/parser.mly" +# 2511 "parsing/parser.mly" ( _1 ) -# 47034 "parsing/parser.ml" +# 53867 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47086,15 +53919,15 @@ module Tables = struct let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2412 "parsing/parser.mly" +# 2398 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Brace _loc__e_ ) -# 47092 "parsing/parser.ml" +# 53925 "parsing/parser.ml" in ( -# 2524 "parsing/parser.mly" +# 2511 "parsing/parser.mly" ( _1 ) -# 47098 "parsing/parser.ml" +# 53931 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47150,15 +53983,15 @@ module Tables = struct let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2414 "parsing/parser.mly" +# 2400 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Bracket _loc__e_ ) -# 47156 "parsing/parser.ml" +# 53989 "parsing/parser.ml" in ( -# 2524 "parsing/parser.mly" +# 2511 "parsing/parser.mly" ( _1 ) -# 47162 "parsing/parser.ml" +# 53995 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47205,9 +54038,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 47211 "parsing/parser.ml" +# 54044 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -47216,34 +54049,34 @@ module Tables = struct let _v = let _1 = let _4 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 47222 "parsing/parser.ml" +# 54055 "parsing/parser.ml" in let _2 = let _1 = # 123 "" ( None ) -# 47228 "parsing/parser.ml" +# 54061 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 47233 "parsing/parser.ml" +# 54066 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2410 "parsing/parser.mly" +# 2396 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Paren _loc__e_ ) -# 47241 "parsing/parser.ml" +# 54074 "parsing/parser.ml" in ( -# 2525 "parsing/parser.mly" +# 2512 "parsing/parser.mly" ( _1 ) -# 47247 "parsing/parser.ml" +# 54080 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47302,9 +54135,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 47308 "parsing/parser.ml" +# 54141 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -47315,42 +54148,42 @@ module Tables = struct let _v = let _1 = let _4 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 47321 "parsing/parser.ml" +# 54154 "parsing/parser.ml" in let _2 = let _1 = let _2 = _2_inlined1 in let x = -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" (_2) -# 47329 "parsing/parser.ml" +# 54162 "parsing/parser.ml" in # 126 "" ( Some x ) -# 47334 "parsing/parser.ml" +# 54167 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 47340 "parsing/parser.ml" +# 54173 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2410 "parsing/parser.mly" +# 2396 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Paren _loc__e_ ) -# 47348 "parsing/parser.ml" +# 54181 "parsing/parser.ml" in ( -# 2525 "parsing/parser.mly" +# 2512 "parsing/parser.mly" ( _1 ) -# 47354 "parsing/parser.ml" +# 54187 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47397,9 +54230,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 47403 "parsing/parser.ml" +# 54236 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -47408,34 +54241,34 @@ module Tables = struct let _v = let _1 = let _4 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 47414 "parsing/parser.ml" +# 54247 "parsing/parser.ml" in let _2 = let _1 = # 123 "" ( None ) -# 47420 "parsing/parser.ml" +# 54253 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 47425 "parsing/parser.ml" +# 54258 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2412 "parsing/parser.mly" +# 2398 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Brace _loc__e_ ) -# 47433 "parsing/parser.ml" +# 54266 "parsing/parser.ml" in ( -# 2525 "parsing/parser.mly" +# 2512 "parsing/parser.mly" ( _1 ) -# 47439 "parsing/parser.ml" +# 54272 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47494,9 +54327,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 47500 "parsing/parser.ml" +# 54333 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -47507,42 +54340,42 @@ module Tables = struct let _v = let _1 = let _4 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 47513 "parsing/parser.ml" +# 54346 "parsing/parser.ml" in let _2 = let _1 = let _2 = _2_inlined1 in let x = -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" (_2) -# 47521 "parsing/parser.ml" +# 54354 "parsing/parser.ml" in # 126 "" ( Some x ) -# 47526 "parsing/parser.ml" +# 54359 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 47532 "parsing/parser.ml" +# 54365 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2412 "parsing/parser.mly" +# 2398 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Brace _loc__e_ ) -# 47540 "parsing/parser.ml" +# 54373 "parsing/parser.ml" in ( -# 2525 "parsing/parser.mly" +# 2512 "parsing/parser.mly" ( _1 ) -# 47546 "parsing/parser.ml" +# 54379 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47589,9 +54422,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 47595 "parsing/parser.ml" +# 54428 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -47600,34 +54433,34 @@ module Tables = struct let _v = let _1 = let _4 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 47606 "parsing/parser.ml" +# 54439 "parsing/parser.ml" in let _2 = let _1 = # 123 "" ( None ) -# 47612 "parsing/parser.ml" +# 54445 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 47617 "parsing/parser.ml" +# 54450 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2414 "parsing/parser.mly" +# 2400 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Bracket _loc__e_ ) -# 47625 "parsing/parser.ml" +# 54458 "parsing/parser.ml" in ( -# 2525 "parsing/parser.mly" +# 2512 "parsing/parser.mly" ( _1 ) -# 47631 "parsing/parser.ml" +# 54464 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47686,9 +54519,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 778 "parsing/parser.mly" +# 766 "parsing/parser.mly" (string) -# 47692 "parsing/parser.ml" +# 54525 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -47699,42 +54532,42 @@ module Tables = struct let _v = let _1 = let _4 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 47705 "parsing/parser.ml" +# 54538 "parsing/parser.ml" in let _2 = let _1 = let _2 = _2_inlined1 in let x = -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" (_2) -# 47713 "parsing/parser.ml" +# 54546 "parsing/parser.ml" in # 126 "" ( Some x ) -# 47718 "parsing/parser.ml" +# 54551 "parsing/parser.ml" in -# 2417 "parsing/parser.mly" +# 2403 "parsing/parser.mly" ( _1, _2 ) -# 47724 "parsing/parser.ml" +# 54557 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2414 "parsing/parser.mly" +# 2400 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Bracket _loc__e_ ) -# 47732 "parsing/parser.ml" +# 54565 "parsing/parser.ml" in ( -# 2525 "parsing/parser.mly" +# 2512 "parsing/parser.mly" ( _1 ) -# 47738 "parsing/parser.ml" +# 54571 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47770,16 +54603,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2565 "parsing/parser.mly" - ( wrap_exp_attrs ~loc:_sloc e - (Some (mknoloc "metaocaml.escape"), []) ) -# 47777 "parsing/parser.ml" +# 2552 "parsing/parser.mly" + ( mkexp ~loc:_sloc (pexp_extension ~id:(mknoloc "metaocaml.escape") e) ) +# 54609 "parsing/parser.ml" in ( -# 2526 "parsing/parser.mly" +# 2513 "parsing/parser.mly" ( _1 ) -# 47783 "parsing/parser.ml" +# 54615 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47822,16 +54654,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2568 "parsing/parser.mly" - ( wrap_exp_attrs ~loc:_sloc e - (Some (mknoloc "metaocaml.bracket"),[]) ) -# 47829 "parsing/parser.ml" +# 2554 "parsing/parser.mly" + ( mkexp ~loc:_sloc (pexp_extension ~id:(mknoloc "metaocaml.bracket") e) ) +# 54660 "parsing/parser.ml" in ( -# 2526 "parsing/parser.mly" +# 2513 "parsing/parser.mly" ( _1 ) -# 47835 "parsing/parser.ml" +# 54666 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47887,15 +54718,15 @@ module Tables = struct let attrs = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 47893 "parsing/parser.ml" +# 54724 "parsing/parser.ml" in -# 2535 "parsing/parser.mly" +# 2522 "parsing/parser.mly" ( e.pexp_desc, (ext, attrs @ e.pexp_attributes) ) -# 47899 "parsing/parser.ml" +# 54730 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -47903,10 +54734,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2528 "parsing/parser.mly" +# 2515 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 47910 "parsing/parser.ml" +# 54741 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -47957,24 +54788,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 47963 "parsing/parser.ml" +# 54794 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 47969 "parsing/parser.ml" +# 54800 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2537 "parsing/parser.mly" +# 2524 "parsing/parser.mly" ( Pexp_construct (mkloc (Lident "()") (make_loc _sloc), None), _2 ) -# 47978 "parsing/parser.ml" +# 54809 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -47982,10 +54813,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2528 "parsing/parser.mly" +# 2515 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 47989 "parsing/parser.ml" +# 54820 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -48043,23 +54874,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 48049 "parsing/parser.ml" +# 54880 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 48055 "parsing/parser.ml" +# 54886 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2539 "parsing/parser.mly" +# 2526 "parsing/parser.mly" ( unclosed "begin" _loc__1_ "end" _loc__4_ ) -# 48063 "parsing/parser.ml" +# 54894 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -48067,10 +54898,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2528 "parsing/parser.mly" +# 2515 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 48074 "parsing/parser.ml" +# 54905 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -48122,9 +54953,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 48128 "parsing/parser.ml" +# 54959 "parsing/parser.ml" in let _2 = @@ -48132,21 +54963,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 48138 "parsing/parser.ml" +# 54969 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 48144 "parsing/parser.ml" +# 54975 "parsing/parser.ml" in -# 2541 "parsing/parser.mly" +# 2528 "parsing/parser.mly" ( Pexp_new(_3), _2 ) -# 48150 "parsing/parser.ml" +# 54981 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -48154,10 +54985,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2528 "parsing/parser.mly" +# 2515 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 48161 "parsing/parser.ml" +# 54992 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -48222,21 +55053,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 48228 "parsing/parser.ml" +# 55059 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 48234 "parsing/parser.ml" +# 55065 "parsing/parser.ml" in -# 2543 "parsing/parser.mly" - ( Pexp_pack _4, _3 ) -# 48240 "parsing/parser.ml" +# 2530 "parsing/parser.mly" + ( Pexp_pack (_4, None), _3 ) +# 55071 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -48244,10 +55075,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2528 "parsing/parser.mly" +# 2515 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 48251 "parsing/parser.ml" +# 55082 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -48327,11 +55158,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3691 "parsing/parser.mly" +# 3860 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 48335 "parsing/parser.ml" + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 55165 "parsing/parser.ml" in let _3 = @@ -48339,24 +55169,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 48345 "parsing/parser.ml" +# 55175 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 48351 "parsing/parser.ml" +# 55181 "parsing/parser.ml" in - let _endpos = _endpos__7_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in -# 2545 "parsing/parser.mly" - ( Pexp_constraint (ghexp ~loc:_sloc (Pexp_pack _4), _6), _3 ) -# 48360 "parsing/parser.ml" +# 2532 "parsing/parser.mly" + ( Pexp_pack (_4, Some _6), _3 ) +# 55187 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -48364,10 +55191,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2528 "parsing/parser.mly" +# 2515 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 48371 "parsing/parser.ml" +# 55198 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -48439,23 +55266,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 48445 "parsing/parser.ml" +# 55272 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 48451 "parsing/parser.ml" +# 55278 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2547 "parsing/parser.mly" +# 2534 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 48459 "parsing/parser.ml" +# 55286 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -48463,10 +55290,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2528 "parsing/parser.mly" +# 2515 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 48470 "parsing/parser.ml" +# 55297 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -48533,27 +55360,27 @@ module Tables = struct let _1 = # 271 "" ( List.flatten xss ) -# 48537 "parsing/parser.ml" +# 55364 "parsing/parser.ml" in -# 2056 "parsing/parser.mly" +# 2044 "parsing/parser.mly" ( _1 ) -# 48542 "parsing/parser.ml" +# 55369 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 978 "parsing/parser.mly" +# 966 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 48551 "parsing/parser.ml" +# 55378 "parsing/parser.ml" in -# 2043 "parsing/parser.mly" +# 2031 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 48557 "parsing/parser.ml" +# 55384 "parsing/parser.ml" in let _2 = @@ -48561,21 +55388,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 48567 "parsing/parser.ml" +# 55394 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 48573 "parsing/parser.ml" +# 55400 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2536 "parsing/parser.mly" ( Pexp_object _3, _2 ) -# 48579 "parsing/parser.ml" +# 55406 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -48583,10 +55410,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2528 "parsing/parser.mly" +# 2515 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 48590 "parsing/parser.ml" +# 55417 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -48653,27 +55480,27 @@ module Tables = struct let _1 = # 271 "" ( List.flatten xss ) -# 48657 "parsing/parser.ml" +# 55484 "parsing/parser.ml" in -# 2056 "parsing/parser.mly" +# 2044 "parsing/parser.mly" ( _1 ) -# 48662 "parsing/parser.ml" +# 55489 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 978 "parsing/parser.mly" +# 966 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 48671 "parsing/parser.ml" +# 55498 "parsing/parser.ml" in -# 2043 "parsing/parser.mly" +# 2031 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 48677 "parsing/parser.ml" +# 55504 "parsing/parser.ml" in let _2 = @@ -48681,23 +55508,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 48687 "parsing/parser.ml" +# 55514 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 48693 "parsing/parser.ml" +# 55520 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2551 "parsing/parser.mly" +# 2538 "parsing/parser.mly" ( unclosed "object" _loc__1_ "end" _loc__4_ ) -# 48701 "parsing/parser.ml" +# 55528 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -48705,10 +55532,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2528 "parsing/parser.mly" +# 2515 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 48712 "parsing/parser.ml" +# 55539 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -48739,30 +55566,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 48745 "parsing/parser.ml" +# 55572 "parsing/parser.ml" in -# 2574 "parsing/parser.mly" +# 2559 "parsing/parser.mly" ( Pexp_ident (_1) ) -# 48751 "parsing/parser.ml" +# 55578 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 48760 "parsing/parser.ml" +# 55587 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 48766 "parsing/parser.ml" +# 55593 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -48788,23 +55615,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2576 "parsing/parser.mly" +# 2561 "parsing/parser.mly" ( Pexp_constant _1 ) -# 48794 "parsing/parser.ml" +# 55621 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 48802 "parsing/parser.ml" +# 55629 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 48808 "parsing/parser.ml" +# 55635 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -48835,30 +55662,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 48841 "parsing/parser.ml" +# 55668 "parsing/parser.ml" in -# 2578 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( Pexp_construct(_1, None) ) -# 48847 "parsing/parser.ml" +# 55674 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 48856 "parsing/parser.ml" +# 55683 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 48862 "parsing/parser.ml" +# 55689 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -48884,23 +55711,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2580 "parsing/parser.mly" +# 2565 "parsing/parser.mly" ( Pexp_variant(_1, None) ) -# 48890 "parsing/parser.ml" +# 55717 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 48898 "parsing/parser.ml" +# 55725 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 48904 "parsing/parser.ml" +# 55731 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -48927,9 +55754,9 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : ( -# 821 "parsing/parser.mly" +# 809 "parsing/parser.mly" (string) -# 48933 "parsing/parser.ml" +# 55760 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -48942,15 +55769,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 48948 "parsing/parser.ml" +# 55775 "parsing/parser.ml" in -# 2582 "parsing/parser.mly" +# 2567 "parsing/parser.mly" ( Pexp_apply(_1, [Nolabel,_2]) ) -# 48954 "parsing/parser.ml" +# 55781 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -48958,15 +55785,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 48964 "parsing/parser.ml" +# 55791 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 48970 "parsing/parser.ml" +# 55797 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49001,23 +55828,23 @@ module Tables = struct let _1 = let _1 = let _1 = -# 2583 "parsing/parser.mly" +# 2568 "parsing/parser.mly" ("!") -# 49007 "parsing/parser.ml" +# 55834 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 49015 "parsing/parser.ml" +# 55842 "parsing/parser.ml" in -# 2584 "parsing/parser.mly" +# 2569 "parsing/parser.mly" ( Pexp_apply(_1, [Nolabel,_2]) ) -# 49021 "parsing/parser.ml" +# 55848 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -49025,15 +55852,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49031 "parsing/parser.ml" +# 55858 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49037 "parsing/parser.ml" +# 55864 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49074,14 +55901,14 @@ module Tables = struct let _1 = let _1 = let _2 = -# 2856 "parsing/parser.mly" +# 2916 "parsing/parser.mly" ( xs ) -# 49080 "parsing/parser.ml" +# 55907 "parsing/parser.ml" in -# 2586 "parsing/parser.mly" +# 2571 "parsing/parser.mly" ( Pexp_override _2 ) -# 49085 "parsing/parser.ml" +# 55912 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -49089,15 +55916,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49095 "parsing/parser.ml" +# 55922 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49101 "parsing/parser.ml" +# 55928 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49138,16 +55965,16 @@ module Tables = struct let _1 = let _1 = let _2 = -# 2856 "parsing/parser.mly" +# 2916 "parsing/parser.mly" ( xs ) -# 49144 "parsing/parser.ml" +# 55971 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2588 "parsing/parser.mly" +# 2573 "parsing/parser.mly" ( unclosed "{<" _loc__1_ ">}" _loc__3_ ) -# 49151 "parsing/parser.ml" +# 55978 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -49155,15 +55982,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49161 "parsing/parser.ml" +# 55988 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49167 "parsing/parser.ml" +# 55994 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49196,24 +56023,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 2590 "parsing/parser.mly" +# 2575 "parsing/parser.mly" ( Pexp_override [] ) -# 49202 "parsing/parser.ml" +# 56029 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49211 "parsing/parser.ml" +# 56038 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49217 "parsing/parser.ml" +# 56044 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49259,15 +56086,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 49265 "parsing/parser.ml" +# 56092 "parsing/parser.ml" in -# 2592 "parsing/parser.mly" +# 2577 "parsing/parser.mly" ( Pexp_field(_1, _3) ) -# 49271 "parsing/parser.ml" +# 56098 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -49275,15 +56102,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49281 "parsing/parser.ml" +# 56108 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49287 "parsing/parser.ml" +# 56114 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49343,24 +56170,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 49349 "parsing/parser.ml" +# 56176 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1704 "parsing/parser.mly" +# 1692 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 49358 "parsing/parser.ml" +# 56185 "parsing/parser.ml" in -# 2594 "parsing/parser.mly" +# 2579 "parsing/parser.mly" ( Pexp_open(od, _4) ) -# 49364 "parsing/parser.ml" +# 56191 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -49368,15 +56195,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49374 "parsing/parser.ml" +# 56201 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49380 "parsing/parser.ml" +# 56207 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49431,9 +56258,9 @@ module Tables = struct let _1 = let _1 = let _4 = -# 2856 "parsing/parser.mly" +# 2916 "parsing/parser.mly" ( xs ) -# 49437 "parsing/parser.ml" +# 56264 "parsing/parser.ml" in let od = let _1 = @@ -49441,18 +56268,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 49447 "parsing/parser.ml" +# 56274 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1704 "parsing/parser.mly" +# 1692 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 49456 "parsing/parser.ml" +# 56283 "parsing/parser.ml" in let _startpos_od_ = _startpos__1_ in @@ -49460,10 +56287,10 @@ module Tables = struct let _symbolstartpos = _startpos_od_ in let _sloc = (_symbolstartpos, _endpos) in -# 2596 "parsing/parser.mly" +# 2581 "parsing/parser.mly" ( (* TODO: review the location of Pexp_override *) Pexp_open(od, mkexp ~loc:_sloc (Pexp_override _4)) ) -# 49467 "parsing/parser.ml" +# 56294 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -49471,15 +56298,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49477 "parsing/parser.ml" +# 56304 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49483 "parsing/parser.ml" +# 56310 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49534,16 +56361,16 @@ module Tables = struct let _1 = let _1 = let _4 = -# 2856 "parsing/parser.mly" +# 2916 "parsing/parser.mly" ( xs ) -# 49540 "parsing/parser.ml" +# 56367 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2599 "parsing/parser.mly" +# 2584 "parsing/parser.mly" ( unclosed "{<" _loc__3_ ">}" _loc__5_ ) -# 49547 "parsing/parser.ml" +# 56374 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -49551,15 +56378,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49557 "parsing/parser.ml" +# 56384 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49563 "parsing/parser.ml" +# 56390 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49591,9 +56418,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 49597 "parsing/parser.ml" +# 56424 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in @@ -49606,23 +56433,23 @@ module Tables = struct let _3 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 49612 "parsing/parser.ml" +# 56439 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 49620 "parsing/parser.ml" +# 56447 "parsing/parser.ml" in -# 2601 "parsing/parser.mly" +# 2586 "parsing/parser.mly" ( Pexp_send(_1, _3) ) -# 49626 "parsing/parser.ml" +# 56453 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -49630,15 +56457,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49636 "parsing/parser.ml" +# 56463 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49642 "parsing/parser.ml" +# 56469 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49671,9 +56498,9 @@ module Tables = struct } = _menhir_stack in let _3 : (Parsetree.expression) = Obj.magic _3 in let _1_inlined1 : ( -# 832 "parsing/parser.mly" +# 820 "parsing/parser.mly" (string) -# 49677 "parsing/parser.ml" +# 56504 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -49688,15 +56515,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1011 "parsing/parser.mly" +# 999 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 49694 "parsing/parser.ml" +# 56521 "parsing/parser.ml" in -# 2603 "parsing/parser.mly" +# 2588 "parsing/parser.mly" ( mkinfix _1 _2 _3 ) -# 49700 "parsing/parser.ml" +# 56527 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -49704,15 +56531,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49710 "parsing/parser.ml" +# 56537 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49716 "parsing/parser.ml" +# 56543 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49738,23 +56565,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2605 "parsing/parser.mly" +# 2590 "parsing/parser.mly" ( Pexp_extension _1 ) -# 49744 "parsing/parser.ml" +# 56571 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49752 "parsing/parser.ml" +# 56579 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49758 "parsing/parser.ml" +# 56585 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49804,18 +56631,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 2606 "parsing/parser.mly" +# 2591 "parsing/parser.mly" (Lident "()") -# 49810 "parsing/parser.ml" +# 56637 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 49819 "parsing/parser.ml" +# 56646 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in @@ -49825,25 +56652,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 49831 "parsing/parser.ml" +# 56658 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1704 "parsing/parser.mly" +# 1692 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 49840 "parsing/parser.ml" +# 56667 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2607 "parsing/parser.mly" +# 2592 "parsing/parser.mly" ( Pexp_open(od, mkexp ~loc:(_loc__3_) (Pexp_construct(_3, None))) ) -# 49847 "parsing/parser.ml" +# 56674 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -49851,15 +56678,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49857 "parsing/parser.ml" +# 56684 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49863 "parsing/parser.ml" +# 56690 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49916,9 +56743,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2609 "parsing/parser.mly" +# 2594 "parsing/parser.mly" ( unclosed "(" _loc__3_ ")" _loc__5_ ) -# 49922 "parsing/parser.ml" +# 56749 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -49926,15 +56753,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49932 "parsing/parser.ml" +# 56759 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49938 "parsing/parser.ml" +# 56765 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -49975,25 +56802,25 @@ module Tables = struct let _v = let _1 = let _1 = -# 2611 "parsing/parser.mly" +# 2596 "parsing/parser.mly" ( let (exten, fields) = _2 in Pexp_record(fields, exten) ) -# 49982 "parsing/parser.ml" +# 56809 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 49991 "parsing/parser.ml" +# 56818 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 49997 "parsing/parser.ml" +# 56824 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50037,9 +56864,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2614 "parsing/parser.mly" +# 2599 "parsing/parser.mly" ( unclosed "{" _loc__1_ "}" _loc__3_ ) -# 50043 "parsing/parser.ml" +# 56870 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -50047,15 +56874,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 50053 "parsing/parser.ml" +# 56880 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 50059 "parsing/parser.ml" +# 56886 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50116,27 +56943,27 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 50122 "parsing/parser.ml" +# 56949 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1704 "parsing/parser.mly" +# 1692 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 50131 "parsing/parser.ml" +# 56958 "parsing/parser.ml" in let _endpos = _endpos__5_ in -# 2616 "parsing/parser.mly" +# 2601 "parsing/parser.mly" ( let (exten, fields) = _4 in Pexp_open(od, mkexp ~loc:(_startpos__3_, _endpos) (Pexp_record(fields, exten))) ) -# 50140 "parsing/parser.ml" +# 56967 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -50144,15 +56971,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 50150 "parsing/parser.ml" +# 56977 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 50156 "parsing/parser.ml" +# 56983 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50210,9 +57037,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2620 "parsing/parser.mly" +# 2605 "parsing/parser.mly" ( unclosed "{" _loc__3_ "}" _loc__5_ ) -# 50216 "parsing/parser.ml" +# 57043 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -50220,15 +57047,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 50226 "parsing/parser.ml" +# 57053 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 50232 "parsing/parser.ml" +# 57059 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50269,14 +57096,14 @@ module Tables = struct let _1 = let _1 = let _2 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 50275 "parsing/parser.ml" +# 57102 "parsing/parser.ml" in -# 2622 "parsing/parser.mly" +# 2607 "parsing/parser.mly" ( Pexp_array(_2) ) -# 50280 "parsing/parser.ml" +# 57107 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -50284,15 +57111,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 50290 "parsing/parser.ml" +# 57117 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 50296 "parsing/parser.ml" +# 57123 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50333,16 +57160,16 @@ module Tables = struct let _1 = let _1 = let _2 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 50339 "parsing/parser.ml" +# 57166 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2624 "parsing/parser.mly" +# 2609 "parsing/parser.mly" ( unclosed "[|" _loc__1_ "|]" _loc__3_ ) -# 50346 "parsing/parser.ml" +# 57173 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -50350,15 +57177,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 50356 "parsing/parser.ml" +# 57183 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 50362 "parsing/parser.ml" +# 57189 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50391,24 +57218,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 2626 "parsing/parser.mly" +# 2611 "parsing/parser.mly" ( Pexp_array [] ) -# 50397 "parsing/parser.ml" +# 57224 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 50406 "parsing/parser.ml" +# 57233 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 50412 "parsing/parser.ml" +# 57239 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50463,9 +57290,9 @@ module Tables = struct let _1 = let _1 = let _4 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 50469 "parsing/parser.ml" +# 57296 "parsing/parser.ml" in let od = let _1 = @@ -50473,25 +57300,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 50479 "parsing/parser.ml" +# 57306 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1704 "parsing/parser.mly" +# 1692 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 50488 "parsing/parser.ml" +# 57315 "parsing/parser.ml" in let _endpos = _endpos__5_ in -# 2628 "parsing/parser.mly" +# 2613 "parsing/parser.mly" ( Pexp_open(od, mkexp ~loc:(_startpos__3_, _endpos) (Pexp_array(_4))) ) -# 50495 "parsing/parser.ml" +# 57322 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -50499,15 +57326,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 50505 "parsing/parser.ml" +# 57332 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 50511 "parsing/parser.ml" +# 57338 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50560,26 +57387,26 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 50566 "parsing/parser.ml" +# 57393 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1704 "parsing/parser.mly" +# 1692 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 50575 "parsing/parser.ml" +# 57402 "parsing/parser.ml" in let _endpos = _endpos__4_ in -# 2630 "parsing/parser.mly" +# 2615 "parsing/parser.mly" ( (* TODO: review the location of Pexp_array *) Pexp_open(od, mkexp ~loc:(_startpos__3_, _endpos) (Pexp_array [])) ) -# 50583 "parsing/parser.ml" +# 57410 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -50587,15 +57414,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 50593 "parsing/parser.ml" +# 57420 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 50599 "parsing/parser.ml" +# 57426 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50650,16 +57477,16 @@ module Tables = struct let _1 = let _1 = let _4 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 50656 "parsing/parser.ml" +# 57483 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2634 "parsing/parser.mly" +# 2619 "parsing/parser.mly" ( unclosed "[|" _loc__3_ "|]" _loc__5_ ) -# 50663 "parsing/parser.ml" +# 57490 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -50667,15 +57494,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 50673 "parsing/parser.ml" +# 57500 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 50679 "parsing/parser.ml" +# 57506 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50716,15 +57543,15 @@ module Tables = struct let _1 = let _1 = let _2 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 50722 "parsing/parser.ml" +# 57549 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2636 "parsing/parser.mly" +# 2621 "parsing/parser.mly" ( fst (mktailexp _loc__3_ _2) ) -# 50728 "parsing/parser.ml" +# 57555 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -50732,15 +57559,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 50738 "parsing/parser.ml" +# 57565 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 50744 "parsing/parser.ml" +# 57571 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50781,16 +57608,16 @@ module Tables = struct let _1 = let _1 = let _2 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 50787 "parsing/parser.ml" +# 57614 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2638 "parsing/parser.mly" +# 2623 "parsing/parser.mly" ( unclosed "[" _loc__1_ "]" _loc__3_ ) -# 50794 "parsing/parser.ml" +# 57621 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -50798,15 +57625,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 50804 "parsing/parser.ml" +# 57631 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 50810 "parsing/parser.ml" +# 57637 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50861,9 +57688,9 @@ module Tables = struct let _1 = let _1 = let _4 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 50867 "parsing/parser.ml" +# 57694 "parsing/parser.ml" in let od = let _1 = @@ -50871,30 +57698,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 50877 "parsing/parser.ml" +# 57704 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1704 "parsing/parser.mly" +# 1692 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 50886 "parsing/parser.ml" +# 57713 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _loc__5_ = (_startpos__5_, _endpos__5_) in -# 2640 "parsing/parser.mly" +# 2625 "parsing/parser.mly" ( let list_exp = (* TODO: review the location of list_exp *) let tail_exp, _tail_loc = mktailexp _loc__5_ _4 in mkexp ~loc:(_startpos__3_, _endpos) tail_exp in Pexp_open(od, list_exp) ) -# 50898 "parsing/parser.ml" +# 57725 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -50902,15 +57729,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 50908 "parsing/parser.ml" +# 57735 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 50914 "parsing/parser.ml" +# 57741 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -50960,18 +57787,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 2645 "parsing/parser.mly" +# 2630 "parsing/parser.mly" (Lident "[]") -# 50966 "parsing/parser.ml" +# 57793 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 50975 "parsing/parser.ml" +# 57802 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in @@ -50981,25 +57808,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 50987 "parsing/parser.ml" +# 57814 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1704 "parsing/parser.mly" +# 1692 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 50996 "parsing/parser.ml" +# 57823 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2646 "parsing/parser.mly" +# 2631 "parsing/parser.mly" ( Pexp_open(od, mkexp ~loc:_loc__3_ (Pexp_construct(_3, None))) ) -# 51003 "parsing/parser.ml" +# 57830 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -51007,15 +57834,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 51013 "parsing/parser.ml" +# 57840 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 51019 "parsing/parser.ml" +# 57846 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -51070,16 +57897,16 @@ module Tables = struct let _1 = let _1 = let _4 = -# 2873 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( es ) -# 51076 "parsing/parser.ml" +# 57903 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2649 "parsing/parser.mly" +# 2634 "parsing/parser.mly" ( unclosed "[" _loc__3_ "]" _loc__5_ ) -# 51083 "parsing/parser.ml" +# 57910 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -51087,15 +57914,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 51093 "parsing/parser.ml" +# 57920 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 51099 "parsing/parser.ml" +# 57926 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -51184,17 +58011,16 @@ module Tables = struct let _v = let _1 = let _1 = - let _8 = + let ptyp = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3691 "parsing/parser.mly" +# 3860 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 51198 "parsing/parser.ml" + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 58024 "parsing/parser.ml" in let _5 = @@ -51202,15 +58028,15 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 51208 "parsing/parser.ml" +# 58034 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 51214 "parsing/parser.ml" +# 58040 "parsing/parser.ml" in let od = @@ -51219,31 +58045,28 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 51225 "parsing/parser.ml" +# 58051 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1704 "parsing/parser.mly" +# 1692 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 51234 "parsing/parser.ml" +# 58060 "parsing/parser.ml" in - let _startpos_od_ = _startpos__1_ in let _endpos = _endpos__9_ in - let _symbolstartpos = _startpos_od_ in - let _sloc = (_symbolstartpos, _endpos) in -# 2652 "parsing/parser.mly" +# 2637 "parsing/parser.mly" ( let modexp = mkexp_attrs ~loc:(_startpos__3_, _endpos) - (Pexp_constraint (ghexp ~loc:_sloc (Pexp_pack _6), _8)) _5 in + (Pexp_pack (_6, Some ptyp)) _5 in Pexp_open(od, modexp) ) -# 51247 "parsing/parser.ml" +# 58070 "parsing/parser.ml" in let _endpos__1_ = _endpos__9_ in @@ -51251,15 +58074,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 51257 "parsing/parser.ml" +# 58080 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 51263 "parsing/parser.ml" +# 58086 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -51346,23 +58169,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 51352 "parsing/parser.ml" +# 58175 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 51358 "parsing/parser.ml" +# 58181 "parsing/parser.ml" in let _loc__8_ = (_startpos__8_, _endpos__8_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2658 "parsing/parser.mly" +# 2643 "parsing/parser.mly" ( unclosed "(" _loc__3_ ")" _loc__8_ ) -# 51366 "parsing/parser.ml" +# 58189 "parsing/parser.ml" in let _endpos__1_ = _endpos__8_ in @@ -51370,15 +58193,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1017 "parsing/parser.mly" +# 1005 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 51376 "parsing/parser.ml" +# 58199 "parsing/parser.ml" in ( -# 2531 "parsing/parser.mly" +# 2518 "parsing/parser.mly" ( _1 ) -# 51382 "parsing/parser.ml" +# 58205 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -51409,30 +58232,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 51415 "parsing/parser.ml" +# 58238 "parsing/parser.ml" in -# 2959 "parsing/parser.mly" +# 3020 "parsing/parser.mly" ( Ppat_var (_1) ) -# 51421 "parsing/parser.ml" +# 58244 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 51430 "parsing/parser.ml" +# 58253 "parsing/parser.ml" in ( -# 2960 "parsing/parser.mly" +# 3021 "parsing/parser.mly" ( _1 ) -# 51436 "parsing/parser.ml" +# 58259 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -51456,9 +58279,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 2961 "parsing/parser.mly" +# 3022 "parsing/parser.mly" ( _1 ) -# 51462 "parsing/parser.ml" +# 58285 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51499,9 +58322,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2966 "parsing/parser.mly" +# 3027 "parsing/parser.mly" ( reloc_pat ~loc:_sloc _2 ) -# 51505 "parsing/parser.ml" +# 58328 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -51525,9 +58348,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 2968 "parsing/parser.mly" +# 3029 "parsing/parser.mly" ( _1 ) -# 51531 "parsing/parser.ml" +# 58354 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51591,9 +58414,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 51597 "parsing/parser.ml" +# 58420 "parsing/parser.ml" in let _3 = @@ -51601,24 +58424,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 51607 "parsing/parser.ml" +# 58430 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 51613 "parsing/parser.ml" +# 58436 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2970 "parsing/parser.mly" +# 3031 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_unpack _4) _3 ) -# 51622 "parsing/parser.ml" +# 58445 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -51693,15 +58516,24 @@ module Tables = struct let _v = let _6 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined4_, _startpos__1_inlined4_, _1_inlined4) in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3860 "parsing/parser.mly" + ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 58528 "parsing/parser.ml" + + in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3691 "parsing/parser.mly" - ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 51705 "parsing/parser.ml" +# 3864 "parsing/parser.mly" + ( mktyp ~loc:_sloc (Ptyp_package _1) ) +# 58537 "parsing/parser.ml" in let _4 = @@ -51710,9 +58542,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 51716 "parsing/parser.ml" +# 58548 "parsing/parser.ml" in let (_endpos__4_, _startpos__4_) = (_endpos__1_inlined3_, _startpos__1_inlined3_) in @@ -51721,15 +58553,15 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 51727 "parsing/parser.ml" +# 58559 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 51733 "parsing/parser.ml" +# 58565 "parsing/parser.ml" in let _endpos = _endpos__7_ in @@ -51737,11 +58569,11 @@ module Tables = struct let _loc__4_ = (_startpos__4_, _endpos__4_) in let _sloc = (_symbolstartpos, _endpos) in ( -# 2972 "parsing/parser.mly" +# 3033 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_constraint(mkpat ~loc:_loc__4_ (Ppat_unpack _4), _6)) _3 ) -# 51745 "parsing/parser.ml" +# 58577 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -51767,23 +58599,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2980 "parsing/parser.mly" +# 3041 "parsing/parser.mly" ( Ppat_any ) -# 51773 "parsing/parser.ml" +# 58605 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 51781 "parsing/parser.ml" +# 58613 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 51787 "parsing/parser.ml" +# 58619 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -51809,23 +58641,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2982 "parsing/parser.mly" +# 3043 "parsing/parser.mly" ( Ppat_constant _1 ) -# 51815 "parsing/parser.ml" +# 58647 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 51823 "parsing/parser.ml" +# 58655 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 51829 "parsing/parser.ml" +# 58661 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -51865,24 +58697,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 2984 "parsing/parser.mly" +# 3045 "parsing/parser.mly" ( Ppat_interval (_1, _3) ) -# 51871 "parsing/parser.ml" +# 58703 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 51880 "parsing/parser.ml" +# 58712 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 51886 "parsing/parser.ml" +# 58718 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -51913,30 +58745,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 51919 "parsing/parser.ml" +# 58751 "parsing/parser.ml" in -# 2986 "parsing/parser.mly" +# 3047 "parsing/parser.mly" ( Ppat_construct(_1, None) ) -# 51925 "parsing/parser.ml" +# 58757 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 51934 "parsing/parser.ml" +# 58766 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 51940 "parsing/parser.ml" +# 58772 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -51962,23 +58794,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 2988 "parsing/parser.mly" +# 3049 "parsing/parser.mly" ( Ppat_variant(_1, None) ) -# 51968 "parsing/parser.ml" +# 58800 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 51976 "parsing/parser.ml" +# 58808 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 51982 "parsing/parser.ml" +# 58814 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52017,15 +58849,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 52023 "parsing/parser.ml" +# 58855 "parsing/parser.ml" in -# 2990 "parsing/parser.mly" +# 3051 "parsing/parser.mly" ( Ppat_type (_2) ) -# 52029 "parsing/parser.ml" +# 58861 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -52033,15 +58865,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52039 "parsing/parser.ml" +# 58871 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52045 "parsing/parser.ml" +# 58877 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52086,15 +58918,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 52092 "parsing/parser.ml" +# 58924 "parsing/parser.ml" in -# 2992 "parsing/parser.mly" +# 3053 "parsing/parser.mly" ( Ppat_open(_1, _3) ) -# 52098 "parsing/parser.ml" +# 58930 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -52102,15 +58934,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52108 "parsing/parser.ml" +# 58940 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52114 "parsing/parser.ml" +# 58946 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52160,18 +58992,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 2993 "parsing/parser.mly" +# 3054 "parsing/parser.mly" (Lident "[]") -# 52166 "parsing/parser.ml" +# 58998 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 52175 "parsing/parser.ml" +# 59007 "parsing/parser.ml" in let _endpos__3_ = _endpos__2_inlined1_ in @@ -52180,18 +59012,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 52186 "parsing/parser.ml" +# 59018 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2994 "parsing/parser.mly" +# 3055 "parsing/parser.mly" ( Ppat_open(_1, mkpat ~loc:_sloc (Ppat_construct(_3, None))) ) -# 52195 "parsing/parser.ml" +# 59027 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -52199,15 +59031,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52205 "parsing/parser.ml" +# 59037 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52211 "parsing/parser.ml" +# 59043 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52257,18 +59089,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 2995 "parsing/parser.mly" +# 3056 "parsing/parser.mly" (Lident "()") -# 52263 "parsing/parser.ml" +# 59095 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 52272 "parsing/parser.ml" +# 59104 "parsing/parser.ml" in let _endpos__3_ = _endpos__2_inlined1_ in @@ -52277,18 +59109,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 52283 "parsing/parser.ml" +# 59115 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2996 "parsing/parser.mly" +# 3057 "parsing/parser.mly" ( Ppat_open(_1, mkpat ~loc:_sloc (Ppat_construct(_3, None))) ) -# 52292 "parsing/parser.ml" +# 59124 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -52296,15 +59128,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52302 "parsing/parser.ml" +# 59134 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52308 "parsing/parser.ml" +# 59140 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52363,15 +59195,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 52369 "parsing/parser.ml" +# 59201 "parsing/parser.ml" in -# 2998 "parsing/parser.mly" +# 3059 "parsing/parser.mly" ( Ppat_open (_1, _4) ) -# 52375 "parsing/parser.ml" +# 59207 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -52379,15 +59211,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52385 "parsing/parser.ml" +# 59217 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52391 "parsing/parser.ml" +# 59223 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52444,9 +59276,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3000 "parsing/parser.mly" +# 3061 "parsing/parser.mly" ( unclosed "(" _loc__3_ ")" _loc__5_ ) -# 52450 "parsing/parser.ml" +# 59282 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -52454,15 +59286,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52460 "parsing/parser.ml" +# 59292 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52466 "parsing/parser.ml" +# 59298 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52511,9 +59343,9 @@ module Tables = struct let _1 = let _loc__4_ = (_startpos__4_, _endpos__4_) in -# 3002 "parsing/parser.mly" +# 3063 "parsing/parser.mly" ( expecting _loc__4_ "pattern" ) -# 52517 "parsing/parser.ml" +# 59349 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -52521,15 +59353,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52527 "parsing/parser.ml" +# 59359 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52533 "parsing/parser.ml" +# 59365 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52572,9 +59404,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3004 "parsing/parser.mly" +# 3065 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 52578 "parsing/parser.ml" +# 59410 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -52582,15 +59414,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52588 "parsing/parser.ml" +# 59420 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52594 "parsing/parser.ml" +# 59426 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52644,24 +59476,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3006 "parsing/parser.mly" +# 3067 "parsing/parser.mly" ( Ppat_constraint(_2, _4) ) -# 52650 "parsing/parser.ml" +# 59482 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52659 "parsing/parser.ml" +# 59491 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52665 "parsing/parser.ml" +# 59497 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52718,9 +59550,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3008 "parsing/parser.mly" +# 3069 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 52724 "parsing/parser.ml" +# 59556 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -52728,15 +59560,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52734 "parsing/parser.ml" +# 59566 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52740 "parsing/parser.ml" +# 59572 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52785,9 +59617,9 @@ module Tables = struct let _1 = let _loc__4_ = (_startpos__4_, _endpos__4_) in -# 3010 "parsing/parser.mly" +# 3071 "parsing/parser.mly" ( expecting _loc__4_ "type" ) -# 52791 "parsing/parser.ml" +# 59623 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -52795,15 +59627,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52801 "parsing/parser.ml" +# 59633 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52807 "parsing/parser.ml" +# 59639 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52880,15 +59712,24 @@ module Tables = struct let _1 = let _6 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in + let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3860 "parsing/parser.mly" + ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in + Typ.package_type ~loc:(make_loc _sloc) ~attrs lid cstrs ) +# 59724 "parsing/parser.ml" + + in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3691 "parsing/parser.mly" - ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in - let descr = Ptyp_package (lid, cstrs) in - mktyp ~loc:_sloc ~attrs descr ) -# 52892 "parsing/parser.ml" +# 3864 "parsing/parser.mly" + ( mktyp ~loc:_sloc (Ptyp_package _1) ) +# 59733 "parsing/parser.ml" in let _3 = @@ -52896,23 +59737,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 52902 "parsing/parser.ml" +# 59743 "parsing/parser.ml" in -# 4127 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1, _2 ) -# 52908 "parsing/parser.ml" +# 59749 "parsing/parser.ml" in let _loc__7_ = (_startpos__7_, _endpos__7_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3013 "parsing/parser.mly" +# 3074 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__7_ ) -# 52916 "parsing/parser.ml" +# 59757 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -52920,15 +59761,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52926 "parsing/parser.ml" +# 59767 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52932 "parsing/parser.ml" +# 59773 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52954,23 +59795,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 3015 "parsing/parser.mly" +# 3076 "parsing/parser.mly" ( Ppat_extension _1 ) -# 52960 "parsing/parser.ml" +# 59801 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1019 "parsing/parser.mly" +# 1007 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 52968 "parsing/parser.ml" +# 59809 "parsing/parser.ml" in ( -# 2976 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( _1 ) -# 52974 "parsing/parser.ml" +# 59815 "parsing/parser.ml" : (Parsetree.pattern)) in { @@ -52990,17 +59831,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 52996 "parsing/parser.ml" +# 59837 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4035 "parsing/parser.mly" +# 4206 "parsing/parser.mly" ( _1 ) -# 53004 "parsing/parser.ml" +# 59845 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53019,17 +59860,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 848 "parsing/parser.mly" +# 836 "parsing/parser.mly" (string) -# 53025 "parsing/parser.ml" +# 59866 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4036 "parsing/parser.mly" +# 4207 "parsing/parser.mly" ( _1 ) -# 53033 "parsing/parser.ml" +# 59874 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53052,9 +59893,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4037 "parsing/parser.mly" +# 4208 "parsing/parser.mly" ( "and" ) -# 53058 "parsing/parser.ml" +# 59899 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53077,9 +59918,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4038 "parsing/parser.mly" +# 4209 "parsing/parser.mly" ( "as" ) -# 53083 "parsing/parser.ml" +# 59924 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53102,9 +59943,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4039 "parsing/parser.mly" +# 4210 "parsing/parser.mly" ( "assert" ) -# 53108 "parsing/parser.ml" +# 59949 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53127,9 +59968,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4040 "parsing/parser.mly" +# 4211 "parsing/parser.mly" ( "begin" ) -# 53133 "parsing/parser.ml" +# 59974 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53152,9 +59993,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4041 "parsing/parser.mly" +# 4212 "parsing/parser.mly" ( "class" ) -# 53158 "parsing/parser.ml" +# 59999 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53177,9 +60018,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4042 "parsing/parser.mly" +# 4213 "parsing/parser.mly" ( "constraint" ) -# 53183 "parsing/parser.ml" +# 60024 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53202,9 +60043,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4043 "parsing/parser.mly" +# 4214 "parsing/parser.mly" ( "do" ) -# 53208 "parsing/parser.ml" +# 60049 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53227,9 +60068,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4044 "parsing/parser.mly" +# 4215 "parsing/parser.mly" ( "done" ) -# 53233 "parsing/parser.ml" +# 60074 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53252,9 +60093,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4045 "parsing/parser.mly" +# 4216 "parsing/parser.mly" ( "downto" ) -# 53258 "parsing/parser.ml" +# 60099 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53277,9 +60118,34 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4046 "parsing/parser.mly" +# 4217 "parsing/parser.mly" + ( "effect" ) +# 60124 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (string) = +# 4218 "parsing/parser.mly" ( "else" ) -# 53283 "parsing/parser.ml" +# 60149 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53302,9 +60168,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4047 "parsing/parser.mly" +# 4219 "parsing/parser.mly" ( "end" ) -# 53308 "parsing/parser.ml" +# 60174 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53327,9 +60193,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4048 "parsing/parser.mly" +# 4220 "parsing/parser.mly" ( "exception" ) -# 53333 "parsing/parser.ml" +# 60199 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53352,9 +60218,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4049 "parsing/parser.mly" +# 4221 "parsing/parser.mly" ( "external" ) -# 53358 "parsing/parser.ml" +# 60224 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53377,9 +60243,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4050 "parsing/parser.mly" +# 4222 "parsing/parser.mly" ( "false" ) -# 53383 "parsing/parser.ml" +# 60249 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53402,9 +60268,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4051 "parsing/parser.mly" +# 4223 "parsing/parser.mly" ( "for" ) -# 53408 "parsing/parser.ml" +# 60274 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53427,9 +60293,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4052 "parsing/parser.mly" +# 4224 "parsing/parser.mly" ( "fun" ) -# 53433 "parsing/parser.ml" +# 60299 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53452,9 +60318,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4053 "parsing/parser.mly" +# 4225 "parsing/parser.mly" ( "function" ) -# 53458 "parsing/parser.ml" +# 60324 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53477,9 +60343,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4054 "parsing/parser.mly" +# 4226 "parsing/parser.mly" ( "functor" ) -# 53483 "parsing/parser.ml" +# 60349 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53502,9 +60368,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4055 "parsing/parser.mly" +# 4227 "parsing/parser.mly" ( "if" ) -# 53508 "parsing/parser.ml" +# 60374 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53527,9 +60393,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4056 "parsing/parser.mly" +# 4228 "parsing/parser.mly" ( "in" ) -# 53533 "parsing/parser.ml" +# 60399 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53552,9 +60418,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4057 "parsing/parser.mly" +# 4229 "parsing/parser.mly" ( "include" ) -# 53558 "parsing/parser.ml" +# 60424 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53577,9 +60443,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4058 "parsing/parser.mly" +# 4230 "parsing/parser.mly" ( "inherit" ) -# 53583 "parsing/parser.ml" +# 60449 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53602,9 +60468,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4059 "parsing/parser.mly" +# 4231 "parsing/parser.mly" ( "initializer" ) -# 53608 "parsing/parser.ml" +# 60474 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53627,9 +60493,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4060 "parsing/parser.mly" +# 4232 "parsing/parser.mly" ( "lazy" ) -# 53633 "parsing/parser.ml" +# 60499 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53652,9 +60518,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4061 "parsing/parser.mly" +# 4233 "parsing/parser.mly" ( "let" ) -# 53658 "parsing/parser.ml" +# 60524 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53677,9 +60543,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4062 "parsing/parser.mly" +# 4234 "parsing/parser.mly" ( "match" ) -# 53683 "parsing/parser.ml" +# 60549 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53702,9 +60568,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4063 "parsing/parser.mly" +# 4235 "parsing/parser.mly" ( "method" ) -# 53708 "parsing/parser.ml" +# 60574 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53727,9 +60593,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4064 "parsing/parser.mly" +# 4236 "parsing/parser.mly" ( "module" ) -# 53733 "parsing/parser.ml" +# 60599 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53752,9 +60618,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4065 "parsing/parser.mly" +# 4237 "parsing/parser.mly" ( "mutable" ) -# 53758 "parsing/parser.ml" +# 60624 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53777,9 +60643,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4066 "parsing/parser.mly" +# 4238 "parsing/parser.mly" ( "new" ) -# 53783 "parsing/parser.ml" +# 60649 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53802,9 +60668,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4067 "parsing/parser.mly" +# 4239 "parsing/parser.mly" ( "nonrec" ) -# 53808 "parsing/parser.ml" +# 60674 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53827,9 +60693,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4068 "parsing/parser.mly" +# 4240 "parsing/parser.mly" ( "object" ) -# 53833 "parsing/parser.ml" +# 60699 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53852,9 +60718,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4069 "parsing/parser.mly" +# 4241 "parsing/parser.mly" ( "of" ) -# 53858 "parsing/parser.ml" +# 60724 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53877,9 +60743,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4070 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( "open" ) -# 53883 "parsing/parser.ml" +# 60749 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53902,9 +60768,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4071 "parsing/parser.mly" +# 4243 "parsing/parser.mly" ( "or" ) -# 53908 "parsing/parser.ml" +# 60774 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53927,9 +60793,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4072 "parsing/parser.mly" +# 4244 "parsing/parser.mly" ( "private" ) -# 53933 "parsing/parser.ml" +# 60799 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53952,9 +60818,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4073 "parsing/parser.mly" +# 4245 "parsing/parser.mly" ( "rec" ) -# 53958 "parsing/parser.ml" +# 60824 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53977,9 +60843,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4074 "parsing/parser.mly" +# 4246 "parsing/parser.mly" ( "sig" ) -# 53983 "parsing/parser.ml" +# 60849 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54002,9 +60868,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4075 "parsing/parser.mly" +# 4247 "parsing/parser.mly" ( "struct" ) -# 54008 "parsing/parser.ml" +# 60874 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54027,9 +60893,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4076 "parsing/parser.mly" +# 4248 "parsing/parser.mly" ( "then" ) -# 54033 "parsing/parser.ml" +# 60899 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54052,9 +60918,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4077 "parsing/parser.mly" +# 4249 "parsing/parser.mly" ( "to" ) -# 54058 "parsing/parser.ml" +# 60924 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54077,9 +60943,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4078 "parsing/parser.mly" +# 4250 "parsing/parser.mly" ( "true" ) -# 54083 "parsing/parser.ml" +# 60949 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54102,9 +60968,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4079 "parsing/parser.mly" +# 4251 "parsing/parser.mly" ( "try" ) -# 54108 "parsing/parser.ml" +# 60974 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54127,9 +60993,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4080 "parsing/parser.mly" +# 4252 "parsing/parser.mly" ( "type" ) -# 54133 "parsing/parser.ml" +# 60999 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54152,9 +61018,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4081 "parsing/parser.mly" +# 4253 "parsing/parser.mly" ( "val" ) -# 54158 "parsing/parser.ml" +# 61024 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54177,9 +61043,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4082 "parsing/parser.mly" +# 4254 "parsing/parser.mly" ( "virtual" ) -# 54183 "parsing/parser.ml" +# 61049 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54202,9 +61068,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4083 "parsing/parser.mly" +# 4255 "parsing/parser.mly" ( "when" ) -# 54208 "parsing/parser.ml" +# 61074 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54227,9 +61093,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4084 "parsing/parser.mly" +# 4256 "parsing/parser.mly" ( "while" ) -# 54233 "parsing/parser.ml" +# 61099 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54252,9 +61118,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4085 "parsing/parser.mly" +# 4257 "parsing/parser.mly" ( "with" ) -# 54258 "parsing/parser.ml" +# 61124 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54277,9 +61143,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.type_exception * string Asttypes.loc option) = -# 3294 "parsing/parser.mly" +# 3417 "parsing/parser.mly" ( _1 ) -# 54283 "parsing/parser.ml" +# 61149 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54354,18 +61220,18 @@ module Tables = struct let attrs = let _1 = _1_inlined5 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 54360 "parsing/parser.ml" +# 61226 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined5_ in let attrs2 = let _1 = _1_inlined4 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 54369 "parsing/parser.ml" +# 61235 "parsing/parser.ml" in let lid = @@ -54374,9 +61240,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54380 "parsing/parser.ml" +# 61246 "parsing/parser.ml" in let id = @@ -54385,30 +61251,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54391 "parsing/parser.ml" +# 61257 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 54399 "parsing/parser.ml" +# 61265 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3303 "parsing/parser.mly" +# 3426 "parsing/parser.mly" ( let loc = make_loc _sloc in let docs = symbol_docs _sloc in - Te.mk_exception ~attrs + Te.mk_exception ~attrs ~loc (Te.rebind id lid ~attrs:(attrs1 @ attrs2) ~loc ~docs) , ext ) -# 54412 "parsing/parser.ml" +# 61278 "parsing/parser.ml" : (Parsetree.type_exception * string Asttypes.loc option)) in { @@ -54439,9 +61305,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2777 "parsing/parser.mly" +# 2762 "parsing/parser.mly" ( _2 ) -# 54445 "parsing/parser.ml" +# 61311 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54489,10 +61355,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2779 "parsing/parser.mly" +# 2764 "parsing/parser.mly" ( ghexp ~loc:_sloc (mkfunction _1 _2 _4) ) -# 54496 "parsing/parser.ml" +# 61362 "parsing/parser.ml" : (Parsetree.expression)) in { @@ -54521,39 +61387,39 @@ module Tables = struct let ys = # 271 "" ( List.flatten xss ) -# 54525 "parsing/parser.ml" +# 61391 "parsing/parser.ml" in let xs = let items = -# 1054 "parsing/parser.mly" +# 1042 "parsing/parser.mly" ( [] ) -# 54531 "parsing/parser.ml" +# 61397 "parsing/parser.ml" in -# 1505 "parsing/parser.mly" +# 1493 "parsing/parser.mly" ( items ) -# 54536 "parsing/parser.ml" +# 61402 "parsing/parser.ml" in # 278 "" ( xs @ ys ) -# 54542 "parsing/parser.ml" +# 61408 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 976 "parsing/parser.mly" +# 964 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 54551 "parsing/parser.ml" +# 61417 "parsing/parser.ml" in ( -# 1498 "parsing/parser.mly" +# 1486 "parsing/parser.mly" ( _1 ) -# 54557 "parsing/parser.ml" +# 61423 "parsing/parser.ml" : (Parsetree.structure)) in { @@ -54596,7 +61462,7 @@ module Tables = struct let ys = # 271 "" ( List.flatten xss ) -# 54600 "parsing/parser.ml" +# 61466 "parsing/parser.ml" in let xs = let items = @@ -54604,65 +61470,65 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 54610 "parsing/parser.ml" +# 61476 "parsing/parser.ml" in -# 1512 "parsing/parser.mly" +# 1500 "parsing/parser.mly" ( mkstrexp e attrs ) -# 54615 "parsing/parser.ml" +# 61481 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 988 "parsing/parser.mly" +# 976 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 54623 "parsing/parser.ml" +# 61489 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1007 "parsing/parser.mly" +# 995 "parsing/parser.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 54633 "parsing/parser.ml" +# 61499 "parsing/parser.ml" in -# 1056 "parsing/parser.mly" +# 1044 "parsing/parser.mly" ( x ) -# 54639 "parsing/parser.ml" +# 61505 "parsing/parser.ml" in -# 1505 "parsing/parser.mly" +# 1493 "parsing/parser.mly" ( items ) -# 54645 "parsing/parser.ml" +# 61511 "parsing/parser.ml" in # 278 "" ( xs @ ys ) -# 54651 "parsing/parser.ml" +# 61517 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_e_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 976 "parsing/parser.mly" +# 964 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 54660 "parsing/parser.ml" +# 61526 "parsing/parser.ml" in ( -# 1498 "parsing/parser.mly" +# 1486 "parsing/parser.mly" ( _1 ) -# 54666 "parsing/parser.ml" +# 61532 "parsing/parser.ml" : (Parsetree.structure)) in { @@ -54690,9 +61556,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 1527 "parsing/parser.mly" +# 1515 "parsing/parser.mly" ( val_of_let_bindings ~loc:_sloc _1 ) -# 54696 "parsing/parser.ml" +# 61562 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -54728,9 +61594,9 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 54734 "parsing/parser.ml" +# 61600 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -54738,10 +61604,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1530 "parsing/parser.mly" +# 1518 "parsing/parser.mly" ( let docs = symbol_docs _sloc in Pstr_extension (_1, add_docs_attrs docs _2) ) -# 54745 "parsing/parser.ml" +# 61611 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -54749,15 +61615,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "parsing/parser.mly" +# 1011 "parsing/parser.mly" ( mkstr ~loc:_sloc _1 ) -# 54755 "parsing/parser.ml" +# 61621 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 54761 "parsing/parser.ml" +# 61627 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -54783,23 +61649,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1533 "parsing/parser.mly" +# 1521 "parsing/parser.mly" ( Pstr_attribute _1 ) -# 54789 "parsing/parser.ml" +# 61655 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1023 "parsing/parser.mly" +# 1011 "parsing/parser.mly" ( mkstr ~loc:_sloc _1 ) -# 54797 "parsing/parser.ml" +# 61663 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 54803 "parsing/parser.ml" +# 61669 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -54825,23 +61691,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1537 "parsing/parser.mly" +# 1525 "parsing/parser.mly" ( pstr_primitive _1 ) -# 54831 "parsing/parser.ml" +# 61697 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 54839 "parsing/parser.ml" +# 61705 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 54845 "parsing/parser.ml" +# 61711 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -54867,23 +61733,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1539 "parsing/parser.mly" +# 1527 "parsing/parser.mly" ( pstr_primitive _1 ) -# 54873 "parsing/parser.ml" +# 61739 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 54881 "parsing/parser.ml" +# 61747 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 54887 "parsing/parser.ml" +# 61753 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -54920,26 +61786,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1236 "parsing/parser.mly" +# 1224 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 54926 "parsing/parser.ml" +# 61792 "parsing/parser.ml" in -# 3138 "parsing/parser.mly" +# 3255 "parsing/parser.mly" ( _1 ) -# 54931 "parsing/parser.ml" +# 61797 "parsing/parser.ml" in -# 3121 "parsing/parser.mly" +# 3238 "parsing/parser.mly" ( _1 ) -# 54937 "parsing/parser.ml" +# 61803 "parsing/parser.ml" in -# 1541 "parsing/parser.mly" +# 1529 "parsing/parser.mly" ( pstr_type _1 ) -# 54943 "parsing/parser.ml" +# 61809 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -54947,15 +61813,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 54953 "parsing/parser.ml" +# 61819 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 54959 "parsing/parser.ml" +# 61825 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -55042,16 +61908,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 55048 "parsing/parser.ml" +# 61914 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let cs = -# 1228 "parsing/parser.mly" +# 1216 "parsing/parser.mly" ( List.rev xs ) -# 55055 "parsing/parser.ml" +# 61921 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -55059,46 +61925,47 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55065 "parsing/parser.ml" +# 61931 "parsing/parser.ml" in let _4 = -# 3955 "parsing/parser.mly" +# 4126 "parsing/parser.mly" ( Recursive ) -# 55071 "parsing/parser.ml" +# 61937 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 55078 "parsing/parser.ml" +# 61944 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3391 "parsing/parser.mly" +# 3514 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in - Te.mk tid cs ~params ~priv ~attrs ~docs, + let loc = make_loc _sloc in + Te.mk tid cs ~params ~priv ~attrs ~docs ~loc, ext ) -# 55090 "parsing/parser.ml" +# 61957 "parsing/parser.ml" in -# 3374 "parsing/parser.mly" +# 3497 "parsing/parser.mly" ( _1 ) -# 55096 "parsing/parser.ml" +# 61963 "parsing/parser.ml" in -# 1543 "parsing/parser.mly" +# 1531 "parsing/parser.mly" ( pstr_typext _1 ) -# 55102 "parsing/parser.ml" +# 61969 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -55106,15 +61973,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55112 "parsing/parser.ml" +# 61979 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 55118 "parsing/parser.ml" +# 61985 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -55208,16 +62075,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 55214 "parsing/parser.ml" +# 62081 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in let cs = -# 1228 "parsing/parser.mly" +# 1216 "parsing/parser.mly" ( List.rev xs ) -# 55221 "parsing/parser.ml" +# 62088 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -55225,9 +62092,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55231 "parsing/parser.ml" +# 62098 "parsing/parser.ml" in let _4 = @@ -55236,41 +62103,42 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 3957 "parsing/parser.mly" +# 4128 "parsing/parser.mly" ( not_expecting _loc "nonrec flag" ) -# 55242 "parsing/parser.ml" +# 62109 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 55250 "parsing/parser.ml" +# 62117 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3391 "parsing/parser.mly" +# 3514 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in - Te.mk tid cs ~params ~priv ~attrs ~docs, + let loc = make_loc _sloc in + Te.mk tid cs ~params ~priv ~attrs ~docs ~loc, ext ) -# 55262 "parsing/parser.ml" +# 62130 "parsing/parser.ml" in -# 3374 "parsing/parser.mly" +# 3497 "parsing/parser.mly" ( _1 ) -# 55268 "parsing/parser.ml" +# 62136 "parsing/parser.ml" in -# 1543 "parsing/parser.mly" +# 1531 "parsing/parser.mly" ( pstr_typext _1 ) -# 55274 "parsing/parser.ml" +# 62142 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -55278,15 +62146,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55284 "parsing/parser.ml" +# 62152 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 55290 "parsing/parser.ml" +# 62158 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -55312,23 +62180,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1545 "parsing/parser.mly" +# 1533 "parsing/parser.mly" ( pstr_exception _1 ) -# 55318 "parsing/parser.ml" +# 62186 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55326 "parsing/parser.ml" +# 62194 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 55332 "parsing/parser.ml" +# 62200 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -55393,9 +62261,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 55399 "parsing/parser.ml" +# 62267 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -55405,36 +62273,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55411 "parsing/parser.ml" +# 62279 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 55419 "parsing/parser.ml" +# 62287 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1571 "parsing/parser.mly" +# 1559 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in let body = Mb.mk name body ~attrs ~loc ~docs in Pstr_module body, ext ) -# 55432 "parsing/parser.ml" +# 62300 "parsing/parser.ml" in -# 1547 "parsing/parser.mly" +# 1535 "parsing/parser.mly" ( _1 ) -# 55438 "parsing/parser.ml" +# 62306 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -55442,15 +62310,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55448 "parsing/parser.ml" +# 62316 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 55454 "parsing/parser.ml" +# 62322 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -55531,9 +62399,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 55537 "parsing/parser.ml" +# 62405 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -55543,24 +62411,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55549 "parsing/parser.ml" +# 62417 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 55557 "parsing/parser.ml" +# 62425 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1608 "parsing/parser.mly" +# 1596 "parsing/parser.mly" ( let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in @@ -55568,25 +62436,25 @@ module Tables = struct ext, Mb.mk name body ~attrs ~loc ~docs ) -# 55572 "parsing/parser.ml" +# 62440 "parsing/parser.ml" in -# 1236 "parsing/parser.mly" +# 1224 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 55578 "parsing/parser.ml" +# 62446 "parsing/parser.ml" in -# 1596 "parsing/parser.mly" +# 1584 "parsing/parser.mly" ( _1 ) -# 55584 "parsing/parser.ml" +# 62452 "parsing/parser.ml" in -# 1549 "parsing/parser.mly" +# 1537 "parsing/parser.mly" ( pstr_recmodule _1 ) -# 55590 "parsing/parser.ml" +# 62458 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -55594,15 +62462,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55600 "parsing/parser.ml" +# 62468 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 55606 "parsing/parser.ml" +# 62474 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -55628,23 +62496,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1551 "parsing/parser.mly" +# 1539 "parsing/parser.mly" ( let (body, ext) = _1 in (Pstr_modtype body, ext) ) -# 55634 "parsing/parser.ml" +# 62502 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55642 "parsing/parser.ml" +# 62510 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 55648 "parsing/parser.ml" +# 62516 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -55670,23 +62538,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1553 "parsing/parser.mly" +# 1541 "parsing/parser.mly" ( let (body, ext) = _1 in (Pstr_open body, ext) ) -# 55676 "parsing/parser.ml" +# 62544 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55684 "parsing/parser.ml" +# 62552 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 55690 "parsing/parser.ml" +# 62558 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -55757,9 +62625,9 @@ module Tables = struct let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in let body : (Parsetree.class_expr) = Obj.magic body in let _1_inlined2 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 55763 "parsing/parser.ml" +# 62631 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -55778,9 +62646,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 55784 "parsing/parser.ml" +# 62652 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -55790,24 +62658,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55796 "parsing/parser.ml" +# 62664 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 55804 "parsing/parser.ml" +# 62672 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1950 "parsing/parser.mly" +# 1938 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -55815,25 +62683,25 @@ module Tables = struct ext, Ci.mk id body ~virt ~params ~attrs ~loc ~docs ) -# 55819 "parsing/parser.ml" +# 62687 "parsing/parser.ml" in -# 1236 "parsing/parser.mly" +# 1224 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 55825 "parsing/parser.ml" +# 62693 "parsing/parser.ml" in -# 1939 "parsing/parser.mly" +# 1927 "parsing/parser.mly" ( _1 ) -# 55831 "parsing/parser.ml" +# 62699 "parsing/parser.ml" in -# 1555 "parsing/parser.mly" +# 1543 "parsing/parser.mly" ( let (ext, l) = _1 in (Pstr_class l, ext) ) -# 55837 "parsing/parser.ml" +# 62705 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -55841,15 +62709,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55847 "parsing/parser.ml" +# 62715 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 55853 "parsing/parser.ml" +# 62721 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -55875,23 +62743,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 1557 "parsing/parser.mly" +# 1545 "parsing/parser.mly" ( let (ext, l) = _1 in (Pstr_class_type l, ext) ) -# 55881 "parsing/parser.ml" +# 62749 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55889 "parsing/parser.ml" +# 62757 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 55895 "parsing/parser.ml" +# 62763 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -55949,38 +62817,38 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 55955 "parsing/parser.ml" +# 62823 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 55964 "parsing/parser.ml" +# 62832 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1645 "parsing/parser.mly" +# 1633 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Incl.mk thing ~attrs ~loc ~docs, ext ) -# 55978 "parsing/parser.ml" +# 62846 "parsing/parser.ml" in -# 1559 "parsing/parser.mly" +# 1547 "parsing/parser.mly" ( pstr_include _1 ) -# 55984 "parsing/parser.ml" +# 62852 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined2_ in @@ -55988,15 +62856,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1040 "parsing/parser.mly" +# 1028 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55994 "parsing/parser.ml" +# 62862 "parsing/parser.ml" in ( -# 1561 "parsing/parser.mly" +# 1549 "parsing/parser.mly" ( _1 ) -# 56000 "parsing/parser.ml" +# 62868 "parsing/parser.ml" : (Parsetree.structure_item)) in { @@ -56020,9 +62888,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4020 "parsing/parser.mly" +# 4191 "parsing/parser.mly" ( "-" ) -# 56026 "parsing/parser.ml" +# 62894 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56045,9 +62913,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4021 "parsing/parser.mly" +# 4192 "parsing/parser.mly" ( "-." ) -# 56051 "parsing/parser.ml" +# 62919 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56101,9 +62969,9 @@ module Tables = struct let _5 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 56107 "parsing/parser.ml" +# 62975 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined1_ in @@ -56112,18 +62980,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 56116 "parsing/parser.ml" +# 62984 "parsing/parser.ml" in -# 1139 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( xs ) -# 56121 "parsing/parser.ml" +# 62989 "parsing/parser.ml" in -# 3721 "parsing/parser.mly" +# 3892 "parsing/parser.mly" ( _1 ) -# 56127 "parsing/parser.ml" +# 62995 "parsing/parser.ml" in let _1 = @@ -56131,20 +62999,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56137 "parsing/parser.ml" +# 63005 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3707 "parsing/parser.mly" +# 3878 "parsing/parser.mly" ( let info = symbol_info _endpos in let attrs = add_info_attrs info _5 in Rf.tag ~loc:(make_loc _sloc) ~attrs _1 _3 _4 ) -# 56148 "parsing/parser.ml" +# 63016 "parsing/parser.ml" : (Parsetree.row_field)) in { @@ -56178,9 +63046,9 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 56184 "parsing/parser.ml" +# 63052 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -56189,20 +63057,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56195 "parsing/parser.ml" +# 63063 "parsing/parser.ml" in let _endpos = _endpos__2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3711 "parsing/parser.mly" +# 3882 "parsing/parser.mly" ( let info = symbol_info _endpos in let attrs = add_info_attrs info _2 in Rf.tag ~loc:(make_loc _sloc) ~attrs _1 true [] ) -# 56206 "parsing/parser.ml" +# 63074 "parsing/parser.ml" : (Parsetree.row_field)) in { @@ -56236,7 +63104,7 @@ module Tables = struct let arg = # 123 "" ( None ) -# 56240 "parsing/parser.ml" +# 63108 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined1_ in let dir = @@ -56245,18 +63113,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56251 "parsing/parser.ml" +# 63119 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3918 "parsing/parser.mly" +# 4089 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56260 "parsing/parser.ml" +# 63128 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -56288,9 +63156,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 835 "parsing/parser.mly" +# 823 "parsing/parser.mly" (string * Location.t * string option) -# 56294 "parsing/parser.ml" +# 63162 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in @@ -56302,23 +63170,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 3922 "parsing/parser.mly" +# 4093 "parsing/parser.mly" ( let (s, _, _) = _1 in Pdir_string s ) -# 56308 "parsing/parser.ml" +# 63176 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1033 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56316 "parsing/parser.ml" +# 63184 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56322 "parsing/parser.ml" +# 63190 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56328,18 +63196,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56334 "parsing/parser.ml" +# 63202 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3918 "parsing/parser.mly" +# 4089 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56343 "parsing/parser.ml" +# 63211 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -56371,9 +63239,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 783 "parsing/parser.mly" +# 771 "parsing/parser.mly" (string * char option) -# 56377 "parsing/parser.ml" +# 63245 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in @@ -56385,23 +63253,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 3923 "parsing/parser.mly" +# 4094 "parsing/parser.mly" ( let (n, m) = _1 in Pdir_int (n ,m) ) -# 56391 "parsing/parser.ml" +# 63259 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1033 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56399 "parsing/parser.ml" +# 63267 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56405 "parsing/parser.ml" +# 63273 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56411,18 +63279,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56417 "parsing/parser.ml" +# 63285 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3918 "parsing/parser.mly" +# 4089 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56426 "parsing/parser.ml" +# 63294 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -56464,23 +63332,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 3924 "parsing/parser.mly" +# 4095 "parsing/parser.mly" ( Pdir_ident _1 ) -# 56470 "parsing/parser.ml" +# 63338 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1033 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56478 "parsing/parser.ml" +# 63346 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56484 "parsing/parser.ml" +# 63352 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56490,18 +63358,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56496 "parsing/parser.ml" +# 63364 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3918 "parsing/parser.mly" +# 4089 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56505 "parsing/parser.ml" +# 63373 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -56543,23 +63411,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 3925 "parsing/parser.mly" +# 4096 "parsing/parser.mly" ( Pdir_ident _1 ) -# 56549 "parsing/parser.ml" +# 63417 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1033 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56557 "parsing/parser.ml" +# 63425 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56563 "parsing/parser.ml" +# 63431 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56569,18 +63437,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56575 "parsing/parser.ml" +# 63443 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3918 "parsing/parser.mly" +# 4089 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56584 "parsing/parser.ml" +# 63452 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -56622,23 +63490,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let x = let _1 = -# 3926 "parsing/parser.mly" +# 4097 "parsing/parser.mly" ( Pdir_bool false ) -# 56628 "parsing/parser.ml" +# 63496 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1033 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56636 "parsing/parser.ml" +# 63504 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56642 "parsing/parser.ml" +# 63510 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56648,18 +63516,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56654 "parsing/parser.ml" +# 63522 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3918 "parsing/parser.mly" +# 4089 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56663 "parsing/parser.ml" +# 63531 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -56701,23 +63569,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let x = let _1 = -# 3927 "parsing/parser.mly" +# 4098 "parsing/parser.mly" ( Pdir_bool true ) -# 56707 "parsing/parser.ml" +# 63575 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1045 "parsing/parser.mly" +# 1033 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56715 "parsing/parser.ml" +# 63583 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56721 "parsing/parser.ml" +# 63589 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56727,18 +63595,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56733 "parsing/parser.ml" +# 63601 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3918 "parsing/parser.mly" +# 4089 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56742 "parsing/parser.ml" +# 63610 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -56780,37 +63648,37 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 56786 "parsing/parser.ml" +# 63654 "parsing/parser.ml" in -# 1512 "parsing/parser.mly" +# 1500 "parsing/parser.mly" ( mkstrexp e attrs ) -# 56791 "parsing/parser.ml" +# 63659 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 988 "parsing/parser.mly" +# 976 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 56799 "parsing/parser.ml" +# 63667 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 976 "parsing/parser.mly" +# 964 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 56808 "parsing/parser.ml" +# 63676 "parsing/parser.ml" in ( -# 1276 "parsing/parser.mly" +# 1264 "parsing/parser.mly" ( Ptop_def _1 ) -# 56814 "parsing/parser.ml" +# 63682 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -56845,21 +63713,21 @@ module Tables = struct let _1 = # 271 "" ( List.flatten xss ) -# 56849 "parsing/parser.ml" +# 63717 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 976 "parsing/parser.mly" +# 964 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 56857 "parsing/parser.ml" +# 63725 "parsing/parser.ml" in ( -# 1280 "parsing/parser.mly" +# 1268 "parsing/parser.mly" ( Ptop_def _1 ) -# 56863 "parsing/parser.ml" +# 63731 "parsing/parser.ml" : (Parsetree.toplevel_phrase)) in { @@ -56890,9 +63758,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.toplevel_phrase) = -# 1284 "parsing/parser.mly" +# 1272 "parsing/parser.mly" ( _1 ) -# 56896 "parsing/parser.ml" +# 63764 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56915,9 +63783,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.toplevel_phrase) = -# 1287 "parsing/parser.mly" +# 1275 "parsing/parser.mly" ( raise End_of_file ) -# 56921 "parsing/parser.ml" +# 63789 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56940,9 +63808,9 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.core_type) = -# 3557 "parsing/parser.mly" +# 3716 "parsing/parser.mly" ( ty ) -# 56946 "parsing/parser.ml" +# 63814 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56954,51 +63822,59 @@ module Tables = struct (fun _menhir_env -> let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { - MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = xs; MenhirLib.EngineTypes.startp = _startpos_xs_; MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = ty; + MenhirLib.EngineTypes.startp = _startpos_ty_; + MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; } = _menhir_stack in - let xs : (Parsetree.core_type list) = Obj.magic xs in + let xs : ((string option * Parsetree.core_type) list) = Obj.magic xs in + let _2 : unit = Obj.magic _2 in + let ty : (Parsetree.core_type) = Obj.magic ty in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_xs_ in + let _startpos = _startpos_ty_ in let _endpos = _endpos_xs_ in let _v = let _1 = - let _1 = - let tys = - let xs = + let ltys = + let xs = # 264 "" ( List.rev xs ) -# 56975 "parsing/parser.ml" - in - -# 1167 "parsing/parser.mly" - ( xs ) -# 56980 "parsing/parser.ml" - - in +# 63856 "parsing/parser.ml" + in -# 3560 "parsing/parser.mly" - ( Ptyp_tuple tys ) -# 56986 "parsing/parser.ml" +# 1127 "parsing/parser.mly" + ( xs ) +# 63861 "parsing/parser.ml" in - let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_xs_) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 56996 "parsing/parser.ml" +# 3725 "parsing/parser.mly" + ( ty, ltys ) +# 63867 "parsing/parser.ml" in + let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_ty_) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in ( -# 3562 "parsing/parser.mly" - ( _1 ) -# 57002 "parsing/parser.ml" +# 3718 "parsing/parser.mly" + ( let ty, ltys = _1 in + mktyp ~loc:_sloc (Ptyp_tuple ((None, ty) :: ltys)) ) +# 63878 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -57029,9 +63905,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.type_constraint) = -# 2876 "parsing/parser.mly" +# 2936 "parsing/parser.mly" ( Pconstraint _2 ) -# 57035 "parsing/parser.ml" +# 63911 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57075,9 +63951,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.type_constraint) = -# 2877 "parsing/parser.mly" +# 2937 "parsing/parser.mly" ( Pcoerce (Some _2, _4) ) -# 57081 "parsing/parser.ml" +# 63957 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57107,9 +63983,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.type_constraint) = -# 2878 "parsing/parser.mly" +# 2938 "parsing/parser.mly" ( Pcoerce (None, _2) ) -# 57113 "parsing/parser.ml" +# 63989 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57139,9 +64015,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.type_constraint) = -# 2879 "parsing/parser.mly" +# 2939 "parsing/parser.mly" ( syntax_error() ) -# 57145 "parsing/parser.ml" +# 64021 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57171,9 +64047,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.type_constraint) = -# 2880 "parsing/parser.mly" +# 2940 "parsing/parser.mly" ( syntax_error() ) -# 57177 "parsing/parser.ml" +# 64053 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57189,9 +64065,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = -# 3212 "parsing/parser.mly" +# 3329 "parsing/parser.mly" ( (Ptype_abstract, Public, None) ) -# 57195 "parsing/parser.ml" +# 64071 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57221,9 +64097,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = -# 3214 "parsing/parser.mly" +# 3331 "parsing/parser.mly" ( _2 ) -# 57227 "parsing/parser.ml" +# 64103 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57246,9 +64122,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3879 "parsing/parser.mly" +# 4050 "parsing/parser.mly" ( _1 ) -# 57252 "parsing/parser.ml" +# 64128 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57278,9 +64154,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = -# 3229 "parsing/parser.mly" +# 3346 "parsing/parser.mly" ( _2, _1 ) -# 57284 "parsing/parser.ml" +# 64160 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57296,9 +64172,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = -# 3222 "parsing/parser.mly" +# 3339 "parsing/parser.mly" ( [] ) -# 57302 "parsing/parser.ml" +# 64178 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57321,9 +64197,9 @@ module Tables = struct let _startpos = _startpos_p_ in let _endpos = _endpos_p_ in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = -# 3224 "parsing/parser.mly" +# 3341 "parsing/parser.mly" ( [p] ) -# 57327 "parsing/parser.ml" +# 64203 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57364,18 +64240,18 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 57368 "parsing/parser.ml" +# 64244 "parsing/parser.ml" in -# 1139 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( xs ) -# 57373 "parsing/parser.ml" +# 64249 "parsing/parser.ml" in ( -# 3226 "parsing/parser.mly" +# 3343 "parsing/parser.mly" ( ps ) -# 57379 "parsing/parser.ml" +# 64255 "parsing/parser.ml" : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list)) in { @@ -57408,24 +64284,24 @@ module Tables = struct let _v = let _1 = let _1 = -# 3234 "parsing/parser.mly" +# 3351 "parsing/parser.mly" ( Ptyp_var tyvar ) -# 57414 "parsing/parser.ml" +# 64290 "parsing/parser.ml" in let _endpos__1_ = _endpos_tyvar_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 57423 "parsing/parser.ml" +# 64299 "parsing/parser.ml" in ( -# 3237 "parsing/parser.mly" +# 3354 "parsing/parser.mly" ( _1 ) -# 57429 "parsing/parser.ml" +# 64305 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -57451,23 +64327,23 @@ module Tables = struct let _v = let _1 = let _1 = -# 3236 "parsing/parser.mly" +# 3353 "parsing/parser.mly" ( Ptyp_any ) -# 57457 "parsing/parser.ml" +# 64333 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1021 "parsing/parser.mly" +# 1009 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 57465 "parsing/parser.ml" +# 64341 "parsing/parser.ml" in ( -# 3237 "parsing/parser.mly" +# 3354 "parsing/parser.mly" ( _1 ) -# 57471 "parsing/parser.ml" +# 64347 "parsing/parser.ml" : (Parsetree.core_type)) in { @@ -57484,9 +64360,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3241 "parsing/parser.mly" +# 3358 "parsing/parser.mly" ( NoVariance, NoInjectivity ) -# 57490 "parsing/parser.ml" +# 64366 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57509,9 +64385,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3242 "parsing/parser.mly" +# 3359 "parsing/parser.mly" ( Covariant, NoInjectivity ) -# 57515 "parsing/parser.ml" +# 64391 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57534,9 +64410,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3243 "parsing/parser.mly" +# 3360 "parsing/parser.mly" ( Contravariant, NoInjectivity ) -# 57540 "parsing/parser.ml" +# 64416 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57559,9 +64435,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3244 "parsing/parser.mly" +# 3361 "parsing/parser.mly" ( NoVariance, Injective ) -# 57565 "parsing/parser.ml" +# 64441 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57591,9 +64467,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3245 "parsing/parser.mly" +# 3362 "parsing/parser.mly" ( Covariant, Injective ) -# 57597 "parsing/parser.ml" +# 64473 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57623,9 +64499,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3245 "parsing/parser.mly" +# 3362 "parsing/parser.mly" ( Covariant, Injective ) -# 57629 "parsing/parser.ml" +# 64505 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57655,9 +64531,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3246 "parsing/parser.mly" +# 3363 "parsing/parser.mly" ( Contravariant, Injective ) -# 57661 "parsing/parser.ml" +# 64537 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57687,9 +64563,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3246 "parsing/parser.mly" +# 3363 "parsing/parser.mly" ( Contravariant, Injective ) -# 57693 "parsing/parser.ml" +# 64569 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57708,9 +64584,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 775 "parsing/parser.mly" +# 763 "parsing/parser.mly" (string) -# 57714 "parsing/parser.ml" +# 64590 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -57718,11 +64594,15 @@ module Tables = struct let _v = let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3248 "parsing/parser.mly" +# 3365 "parsing/parser.mly" ( if _1 = "+!" then Covariant, Injective else if _1 = "-!" then Contravariant, Injective else + if _1 = "+-" then Bivariant, NoInjectivity else + if _1 = "-+" then Bivariant, NoInjectivity else + if _1 = "+-!" then Bivariant, Injective else + if _1 = "-+!" then Bivariant, Injective else expecting _loc__1_ "type_variance" ) -# 57726 "parsing/parser.ml" +# 64606 "parsing/parser.ml" : (Asttypes.variance * Asttypes.injectivity)) in { @@ -57742,9 +64622,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 821 "parsing/parser.mly" +# 809 "parsing/parser.mly" (string) -# 57748 "parsing/parser.ml" +# 64628 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -57752,11 +64632,13 @@ module Tables = struct let _v = let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3252 "parsing/parser.mly" +# 3373 "parsing/parser.mly" ( if _1 = "!+" then Covariant, Injective else if _1 = "!-" then Contravariant, Injective else + if _1 = "!+-" then Bivariant, Injective else + if _1 = "!-+" then Bivariant, Injective else expecting _loc__1_ "type_variance" ) -# 57760 "parsing/parser.ml" +# 64642 "parsing/parser.ml" : (Asttypes.variance * Asttypes.injectivity)) in { @@ -57792,39 +64674,39 @@ module Tables = struct let ys = # 271 "" ( List.flatten xss ) -# 57796 "parsing/parser.ml" +# 64678 "parsing/parser.ml" in let xs = let _1 = -# 1054 "parsing/parser.mly" +# 1042 "parsing/parser.mly" ( [] ) -# 57802 "parsing/parser.ml" +# 64684 "parsing/parser.ml" in -# 1307 "parsing/parser.mly" +# 1295 "parsing/parser.mly" ( _1 ) -# 57807 "parsing/parser.ml" +# 64689 "parsing/parser.ml" in # 278 "" ( xs @ ys ) -# 57813 "parsing/parser.ml" +# 64695 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 980 "parsing/parser.mly" +# 968 "parsing/parser.mly" ( extra_def _startpos _endpos _1 ) -# 57822 "parsing/parser.ml" +# 64704 "parsing/parser.ml" in ( -# 1300 "parsing/parser.mly" +# 1288 "parsing/parser.mly" ( _1 ) -# 57828 "parsing/parser.ml" +# 64710 "parsing/parser.ml" : (Parsetree.toplevel_phrase list)) in { @@ -57874,7 +64756,7 @@ module Tables = struct let ys = # 271 "" ( List.flatten xss ) -# 57878 "parsing/parser.ml" +# 64760 "parsing/parser.ml" in let xs = let _1 = @@ -57882,61 +64764,61 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 57888 "parsing/parser.ml" +# 64770 "parsing/parser.ml" in -# 1512 "parsing/parser.mly" +# 1500 "parsing/parser.mly" ( mkstrexp e attrs ) -# 57893 "parsing/parser.ml" +# 64775 "parsing/parser.ml" in -# 998 "parsing/parser.mly" +# 986 "parsing/parser.mly" ( Ptop_def [_1] ) -# 57899 "parsing/parser.ml" +# 64781 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 996 "parsing/parser.mly" +# 984 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 57907 "parsing/parser.ml" +# 64789 "parsing/parser.ml" in -# 1056 "parsing/parser.mly" +# 1044 "parsing/parser.mly" ( x ) -# 57913 "parsing/parser.ml" +# 64795 "parsing/parser.ml" in -# 1307 "parsing/parser.mly" +# 1295 "parsing/parser.mly" ( _1 ) -# 57919 "parsing/parser.ml" +# 64801 "parsing/parser.ml" in # 278 "" ( xs @ ys ) -# 57925 "parsing/parser.ml" +# 64807 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_e_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 980 "parsing/parser.mly" +# 968 "parsing/parser.mly" ( extra_def _startpos _endpos _1 ) -# 57934 "parsing/parser.ml" +# 64816 "parsing/parser.ml" in ( -# 1300 "parsing/parser.mly" +# 1288 "parsing/parser.mly" ( _1 ) -# 57940 "parsing/parser.ml" +# 64822 "parsing/parser.ml" : (Parsetree.toplevel_phrase list)) in { @@ -57974,9 +64856,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Asttypes.label) = -# 3798 "parsing/parser.mly" +# 3969 "parsing/parser.mly" ( _2 ) -# 57980 "parsing/parser.ml" +# 64862 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58016,9 +64898,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in ( -# 3799 "parsing/parser.mly" +# 3970 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 58022 "parsing/parser.ml" +# 64904 "parsing/parser.ml" : (Asttypes.label)) in { @@ -58051,9 +64933,9 @@ module Tables = struct let _v = let _loc__2_ = (_startpos__2_, _endpos__2_) in ( -# 3800 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( expecting _loc__2_ "operator" ) -# 58057 "parsing/parser.ml" +# 64939 "parsing/parser.ml" : (Asttypes.label)) in { @@ -58093,9 +64975,9 @@ module Tables = struct let _v = let _loc__3_ = (_startpos__3_, _endpos__3_) in ( -# 3801 "parsing/parser.mly" +# 3972 "parsing/parser.mly" ( expecting _loc__3_ "module-expr" ) -# 58099 "parsing/parser.ml" +# 64981 "parsing/parser.ml" : (Asttypes.label)) in { @@ -58115,17 +64997,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 58121 "parsing/parser.ml" +# 65003 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 3804 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( _1 ) -# 58129 "parsing/parser.ml" +# 65011 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58148,9 +65030,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 3805 "parsing/parser.mly" +# 3976 "parsing/parser.mly" ( _1 ) -# 58154 "parsing/parser.ml" +# 65036 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58173,9 +65055,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 3873 "parsing/parser.mly" +# 4044 "parsing/parser.mly" ( _1 ) -# 58179 "parsing/parser.ml" +# 65061 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58220,9 +65102,9 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 58226 "parsing/parser.ml" +# 65108 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let mutable_ : (Asttypes.mutable_flag) = Obj.magic mutable_ in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -58233,33 +65115,33 @@ module Tables = struct let label = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 58239 "parsing/parser.ml" +# 65121 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58247 "parsing/parser.ml" +# 65129 "parsing/parser.ml" in let attrs = -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 58253 "parsing/parser.ml" +# 65135 "parsing/parser.ml" in let _1 = -# 4013 "parsing/parser.mly" +# 4184 "parsing/parser.mly" ( Fresh ) -# 58258 "parsing/parser.ml" +# 65140 "parsing/parser.ml" in ( -# 2090 "parsing/parser.mly" +# 2078 "parsing/parser.mly" ( (label, mutable_, Cfk_virtual ty), attrs ) -# 58263 "parsing/parser.ml" +# 65145 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.mutable_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -58307,9 +65189,9 @@ module Tables = struct let _6 : (Parsetree.expression) = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 58313 "parsing/parser.ml" +# 65195 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -58320,33 +65202,33 @@ module Tables = struct let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 58326 "parsing/parser.ml" +# 65208 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58334 "parsing/parser.ml" +# 65216 "parsing/parser.ml" in let _2 = -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 58340 "parsing/parser.ml" +# 65222 "parsing/parser.ml" in let _1 = -# 4016 "parsing/parser.mly" +# 4187 "parsing/parser.mly" ( Fresh ) -# 58345 "parsing/parser.ml" +# 65227 "parsing/parser.ml" in ( -# 2092 "parsing/parser.mly" +# 2080 "parsing/parser.mly" ( (_4, _3, Cfk_concrete (_1, _6)), _2 ) -# 58350 "parsing/parser.ml" +# 65232 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.mutable_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -58400,9 +65282,9 @@ module Tables = struct let _6 : (Parsetree.expression) = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 58406 "parsing/parser.ml" +# 65288 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -58414,36 +65296,36 @@ module Tables = struct let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 58420 "parsing/parser.ml" +# 65302 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58428 "parsing/parser.ml" +# 65310 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 58436 "parsing/parser.ml" +# 65318 "parsing/parser.ml" in let _1 = -# 4017 "parsing/parser.mly" +# 4188 "parsing/parser.mly" ( Override ) -# 58442 "parsing/parser.ml" +# 65324 "parsing/parser.ml" in ( -# 2092 "parsing/parser.mly" +# 2080 "parsing/parser.mly" ( (_4, _3, Cfk_concrete (_1, _6)), _2 ) -# 58447 "parsing/parser.ml" +# 65329 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.mutable_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -58498,9 +65380,9 @@ module Tables = struct let _6 : unit = Obj.magic _6 in let _5 : (Parsetree.type_constraint) = Obj.magic _5 in let _1_inlined1 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 58504 "parsing/parser.ml" +# 65386 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -58511,30 +65393,30 @@ module Tables = struct let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 58517 "parsing/parser.ml" +# 65399 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58525 "parsing/parser.ml" +# 65407 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined1_ in let _2 = -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 58532 "parsing/parser.ml" +# 65414 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_, _startpos__1_) in let _1 = -# 4016 "parsing/parser.mly" +# 4187 "parsing/parser.mly" ( Fresh ) -# 58538 "parsing/parser.ml" +# 65420 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__7_ in @@ -58550,11 +65432,11 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2095 "parsing/parser.mly" +# 2083 "parsing/parser.mly" ( let e = mkexp_constraint ~loc:_sloc _7 _5 in (_4, _3, Cfk_concrete (_1, e)), _2 ) -# 58558 "parsing/parser.ml" +# 65440 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.mutable_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -58615,9 +65497,9 @@ module Tables = struct let _6 : unit = Obj.magic _6 in let _5 : (Parsetree.type_constraint) = Obj.magic _5 in let _1_inlined2 : ( -# 797 "parsing/parser.mly" +# 785 "parsing/parser.mly" (string) -# 58621 "parsing/parser.ml" +# 65503 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -58629,33 +65511,33 @@ module Tables = struct let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 3765 "parsing/parser.mly" +# 3936 "parsing/parser.mly" ( _1 ) -# 58635 "parsing/parser.ml" +# 65517 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58643 "parsing/parser.ml" +# 65525 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 58652 "parsing/parser.ml" +# 65534 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _1 = -# 4017 "parsing/parser.mly" +# 4188 "parsing/parser.mly" ( Override ) -# 58659 "parsing/parser.ml" +# 65541 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -58670,11 +65552,11 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 2095 "parsing/parser.mly" +# 2083 "parsing/parser.mly" ( let e = mkexp_constraint ~loc:_sloc _7 _5 in (_4, _3, Cfk_concrete (_1, e)), _2 ) -# 58678 "parsing/parser.ml" +# 65560 "parsing/parser.ml" : ((Asttypes.label Asttypes.loc * Asttypes.mutable_flag * Parsetree.class_field_kind) * Parsetree.attributes)) @@ -58745,9 +65627,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4110 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 58751 "parsing/parser.ml" +# 65633 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -58757,30 +65639,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58763 "parsing/parser.ml" +# 65645 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4114 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 58771 "parsing/parser.ml" +# 65653 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3083 "parsing/parser.mly" +# 3200 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Val.mk id ty ~attrs ~loc ~docs, ext ) -# 58784 "parsing/parser.ml" +# 65666 "parsing/parser.ml" : (Parsetree.value_description * string Asttypes.loc option)) in { @@ -58797,9 +65679,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.virtual_flag) = -# 3977 "parsing/parser.mly" +# 4148 "parsing/parser.mly" ( Concrete ) -# 58803 "parsing/parser.ml" +# 65685 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58822,9 +65704,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.virtual_flag) = -# 3978 "parsing/parser.mly" +# 4149 "parsing/parser.mly" ( Virtual ) -# 58828 "parsing/parser.ml" +# 65710 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58847,9 +65729,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag) = -# 4001 "parsing/parser.mly" +# 4172 "parsing/parser.mly" ( Immutable ) -# 58853 "parsing/parser.ml" +# 65735 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58879,9 +65761,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag) = -# 4002 "parsing/parser.mly" +# 4173 "parsing/parser.mly" ( Mutable ) -# 58885 "parsing/parser.ml" +# 65767 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58911,9 +65793,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag) = -# 4003 "parsing/parser.mly" +# 4174 "parsing/parser.mly" ( Mutable ) -# 58917 "parsing/parser.ml" +# 65799 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58936,9 +65818,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = -# 4008 "parsing/parser.mly" +# 4179 "parsing/parser.mly" ( Public ) -# 58942 "parsing/parser.ml" +# 65824 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58968,9 +65850,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 4009 "parsing/parser.mly" +# 4180 "parsing/parser.mly" ( Private ) -# 58974 "parsing/parser.ml" +# 65856 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59000,9 +65882,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 4010 "parsing/parser.mly" +# 4181 "parsing/parser.mly" ( Private ) -# 59006 "parsing/parser.ml" +# 65888 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59065,27 +65947,27 @@ module Tables = struct let xs = # 264 "" ( List.rev xs ) -# 59069 "parsing/parser.ml" +# 65951 "parsing/parser.ml" in -# 1068 "parsing/parser.mly" +# 1056 "parsing/parser.mly" ( xs ) -# 59074 "parsing/parser.ml" +# 65956 "parsing/parser.ml" in -# 3183 "parsing/parser.mly" +# 3300 "parsing/parser.mly" ( _1 ) -# 59080 "parsing/parser.ml" +# 65962 "parsing/parser.ml" in let _endpos__6_ = _endpos_xs_ in let _5 = let _1 = _1_inlined2 in -# 3505 "parsing/parser.mly" +# 3629 "parsing/parser.mly" ( _1 ) -# 59089 "parsing/parser.ml" +# 65971 "parsing/parser.ml" in let _3 = @@ -59094,16 +65976,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59100 "parsing/parser.ml" +# 65982 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3424 "parsing/parser.mly" +# 3548 "parsing/parser.mly" ( let lident = loc_last _3 in Pwith_type (_3, @@ -59113,7 +65995,7 @@ module Tables = struct ~manifest:_5 ~priv:_4 ~loc:(make_loc _sloc))) ) -# 59117 "parsing/parser.ml" +# 65999 "parsing/parser.ml" : (Parsetree.with_constraint)) in { @@ -59168,9 +66050,9 @@ module Tables = struct let _5 = let _1 = _1_inlined2 in -# 3505 "parsing/parser.mly" +# 3629 "parsing/parser.mly" ( _1 ) -# 59174 "parsing/parser.ml" +# 66056 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined2_ in @@ -59180,16 +66062,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59186 "parsing/parser.ml" +# 66068 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in ( -# 3437 "parsing/parser.mly" +# 3561 "parsing/parser.mly" ( let lident = loc_last _3 in Pwith_typesubst (_3, @@ -59197,7 +66079,7 @@ module Tables = struct ~params:_2 ~manifest:_5 ~loc:(make_loc _sloc))) ) -# 59201 "parsing/parser.ml" +# 66083 "parsing/parser.ml" : (Parsetree.with_constraint)) in { @@ -59248,9 +66130,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59254 "parsing/parser.ml" +# 66136 "parsing/parser.ml" in let _2 = @@ -59259,15 +66141,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59265 "parsing/parser.ml" +# 66147 "parsing/parser.ml" in ( -# 3445 "parsing/parser.mly" +# 3569 "parsing/parser.mly" ( Pwith_module (_2, _4) ) -# 59271 "parsing/parser.ml" +# 66153 "parsing/parser.ml" : (Parsetree.with_constraint)) in { @@ -59318,9 +66200,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59324 "parsing/parser.ml" +# 66206 "parsing/parser.ml" in let _2 = @@ -59329,15 +66211,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59335 "parsing/parser.ml" +# 66217 "parsing/parser.ml" in ( -# 3447 "parsing/parser.mly" +# 3571 "parsing/parser.mly" ( Pwith_modsubst (_2, _4) ) -# 59341 "parsing/parser.ml" +# 66223 "parsing/parser.ml" : (Parsetree.with_constraint)) in { @@ -59395,15 +66277,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59401 "parsing/parser.ml" +# 66283 "parsing/parser.ml" in ( -# 3449 "parsing/parser.mly" +# 3573 "parsing/parser.mly" ( Pwith_modtype (l, rhs) ) -# 59407 "parsing/parser.ml" +# 66289 "parsing/parser.ml" : (Parsetree.with_constraint)) in { @@ -59461,15 +66343,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 984 "parsing/parser.mly" +# 972 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59467 "parsing/parser.ml" +# 66349 "parsing/parser.ml" in ( -# 3451 "parsing/parser.mly" +# 3575 "parsing/parser.mly" ( Pwith_modtypesubst (l, rhs) ) -# 59473 "parsing/parser.ml" +# 66355 "parsing/parser.ml" : (Parsetree.with_constraint)) in { @@ -59493,9 +66375,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = -# 3454 "parsing/parser.mly" +# 3578 "parsing/parser.mly" ( Public ) -# 59499 "parsing/parser.ml" +# 66381 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59525,9 +66407,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 3455 "parsing/parser.mly" +# 3579 "parsing/parser.mly" ( Private ) -# 59531 "parsing/parser.ml" +# 66413 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59555,59 +66437,59 @@ end let use_file = fun lexer lexbuf : (Parsetree.toplevel_phrase list) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2062 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2282 lexer lexbuf) and toplevel_phrase = fun lexer lexbuf : (Parsetree.toplevel_phrase) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2042 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2262 lexer lexbuf) and parse_val_longident = fun lexer lexbuf : (Longident.t) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2036 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2256 lexer lexbuf) and parse_pattern = fun lexer lexbuf : (Parsetree.pattern) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2032 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2252 lexer lexbuf) and parse_mty_longident = fun lexer lexbuf : (Longident.t) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2028 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2248 lexer lexbuf) and parse_module_type = fun lexer lexbuf : (Parsetree.module_type) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2024 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2244 lexer lexbuf) and parse_module_expr = fun lexer lexbuf : (Parsetree.module_expr) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2020 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2240 lexer lexbuf) and parse_mod_longident = fun lexer lexbuf : (Longident.t) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2016 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2236 lexer lexbuf) and parse_mod_ext_longident = fun lexer lexbuf : (Longident.t) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2012 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2232 lexer lexbuf) and parse_expression = fun lexer lexbuf : (Parsetree.expression) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2008 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2228 lexer lexbuf) and parse_core_type = fun lexer lexbuf : (Parsetree.core_type) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2004 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2224 lexer lexbuf) and parse_constr_longident = fun lexer lexbuf : (Longident.t) -> - Obj.magic (MenhirInterpreter.entry `Simplified 2000 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2220 lexer lexbuf) and parse_any_longident = fun lexer lexbuf : (Longident.t) -> - Obj.magic (MenhirInterpreter.entry `Simplified 1982 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2202 lexer lexbuf) and interface = fun lexer lexbuf : (Parsetree.signature) -> - Obj.magic (MenhirInterpreter.entry `Simplified 1978 lexer lexbuf) + Obj.magic (MenhirInterpreter.entry `Simplified 2198 lexer lexbuf) and implementation = fun lexer lexbuf : (Parsetree.structure) -> @@ -59617,59 +66499,59 @@ module Incremental = struct let use_file = fun initial_position : (Parsetree.toplevel_phrase list) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 2062 initial_position) + Obj.magic (MenhirInterpreter.start 2282 initial_position) and toplevel_phrase = fun initial_position : (Parsetree.toplevel_phrase) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 2042 initial_position) + Obj.magic (MenhirInterpreter.start 2262 initial_position) and parse_val_longident = fun initial_position : (Longident.t) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 2036 initial_position) + Obj.magic (MenhirInterpreter.start 2256 initial_position) and parse_pattern = fun initial_position : (Parsetree.pattern) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 2032 initial_position) + Obj.magic (MenhirInterpreter.start 2252 initial_position) and parse_mty_longident = fun initial_position : (Longident.t) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 2028 initial_position) + Obj.magic (MenhirInterpreter.start 2248 initial_position) and parse_module_type = fun initial_position : (Parsetree.module_type) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 2024 initial_position) + Obj.magic (MenhirInterpreter.start 2244 initial_position) and parse_module_expr = fun initial_position : (Parsetree.module_expr) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 2020 initial_position) + Obj.magic (MenhirInterpreter.start 2240 initial_position) and parse_mod_longident = fun initial_position : (Longident.t) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 2016 initial_position) + Obj.magic (MenhirInterpreter.start 2236 initial_position) and parse_mod_ext_longident = fun initial_position : (Longident.t) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 2012 initial_position) + Obj.magic (MenhirInterpreter.start 2232 initial_position) and parse_expression = fun initial_position : (Parsetree.expression) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 2008 initial_position) + Obj.magic (MenhirInterpreter.start 2228 initial_position) and parse_core_type = fun initial_position : (Parsetree.core_type) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 2004 initial_position) + Obj.magic (MenhirInterpreter.start 2224 initial_position) and parse_constr_longident = fun initial_position : (Longident.t) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 2000 initial_position) + Obj.magic (MenhirInterpreter.start 2220 initial_position) and parse_any_longident = fun initial_position : (Longident.t) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 1982 initial_position) + Obj.magic (MenhirInterpreter.start 2202 initial_position) and interface = fun initial_position : (Parsetree.signature) MenhirInterpreter.checkpoint -> - Obj.magic (MenhirInterpreter.start 1978 initial_position) + Obj.magic (MenhirInterpreter.start 2198 initial_position) and implementation = fun initial_position : (Parsetree.structure) MenhirInterpreter.checkpoint -> @@ -59677,7 +66559,7 @@ module Incremental = struct end -# 4152 "parsing/parser.mly" +# 4324 "parsing/parser.mly" -# 59684 "parsing/parser.ml" +# 66566 "parsing/parser.ml" diff --git a/boot/ocamlc b/boot/ocamlc index 852a0ec9..14f2d511 100755 Binary files a/boot/ocamlc and b/boot/ocamlc differ diff --git a/boot/ocamllex b/boot/ocamllex index 1c1de472..c663339d 100755 Binary files a/boot/ocamllex and b/boot/ocamllex differ diff --git a/build-aux/ax_prog_cc_for_build.m4 b/build-aux/ax_prog_cc_for_build.m4 new file mode 100644 index 00000000..4d1de993 --- /dev/null +++ b/build-aux/ax_prog_cc_for_build.m4 @@ -0,0 +1,175 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PROG_CC_FOR_BUILD +# +# DESCRIPTION +# +# This macro searches for a C compiler that generates native executables, +# that is a C compiler that surely is not a cross-compiler. This can be +# useful if you have to generate source code at compile-time like for +# example GCC does. +# +# The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything +# needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD). +# The value of these variables can be overridden by the user by specifying +# a compiler with an environment variable (like you do for standard CC). +# +# It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object +# file extensions for the build platform, and GCC_FOR_BUILD to `yes' if +# the compiler we found is GCC. All these variables but GCC_FOR_BUILD are +# substituted in the Makefile. +# +# LICENSE +# +# Copyright (c) 2008 Paolo Bonzini +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 26 + +AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD]) +AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_CPP])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl + +dnl Use the standard macros, but make them use other variable names +dnl +pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl +pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl +pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl +pushdef([ac_cv_prog_cc_c99], ac_cv_build_prog_cc_c99)dnl +pushdef([ac_cv_prog_cc_c11], ac_cv_build_prog_cc_c11)dnl +pushdef([ac_cv_prog_cc_c23], ac_cv_build_prog_cc_c23)dnl +pushdef([ac_cv_prog_cc_stdc], ac_cv_build_prog_cc_stdc)dnl +pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl +pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl +pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl +pushdef([ac_prog_cc_stdc], ac_build_prog_cc_stdc)dnl +pushdef([ac_exeext], ac_build_exeext)dnl +pushdef([ac_objext], ac_build_objext)dnl +pushdef([CC], CC_FOR_BUILD)dnl +pushdef([CPP], CPP_FOR_BUILD)dnl +pushdef([GCC], GCC_FOR_BUILD)dnl +pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl +pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl +pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl +pushdef([host], build)dnl +pushdef([host_alias], build_alias)dnl +pushdef([host_cpu], build_cpu)dnl +pushdef([host_vendor], build_vendor)dnl +pushdef([host_os], build_os)dnl +pushdef([ac_cv_host], ac_cv_build)dnl +pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl +pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl +pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl +pushdef([ac_cv_host_os], ac_cv_build_os)dnl +pushdef([ac_tool_prefix], ac_build_tool_prefix)dnl +pushdef([am_cv_CC_dependencies_compiler_type], am_cv_build_CC_dependencies_compiler_type)dnl +pushdef([am_cv_prog_cc_c_o], am_cv_build_prog_cc_c_o)dnl +pushdef([cross_compiling], cross_compiling_build)dnl +dnl +dnl These variables are problematic to rename by M4 macros, so we save +dnl their values in alternative names, and restore the values later. +dnl +dnl _AC_COMPILER_EXEEXT and _AC_COMPILER_OBJEXT internally call +dnl AC_SUBST which prevents the renaming of EXEEXT and OBJEXT +dnl variables. It's not a good idea to rename ac_cv_exeext and +dnl ac_cv_objext either as they're related. +dnl Renaming ac_exeext and ac_objext is safe though. +dnl +ac_cv_host_exeext=$ac_cv_exeext +AS_VAR_SET_IF([ac_cv_build_exeext], + [ac_cv_exeext=$ac_cv_build_exeext], + [AS_UNSET([ac_cv_exeext])]) +ac_cv_host_objext=$ac_cv_objext +AS_VAR_SET_IF([ac_cv_build_objext], + [ac_cv_objext=$ac_cv_build_objext], + [AS_UNSET([ac_cv_objext])]) +dnl +dnl ac_cv_c_compiler_gnu is used in _AC_LANG_COMPILER_GNU (called by +dnl AC_PROG_CC) indirectly. +dnl +ac_cv_host_c_compiler_gnu=$ac_cv_c_compiler_gnu +AS_VAR_SET_IF([ac_cv_build_c_compiler_gnu], + [ac_cv_c_compiler_gnu=$ac_cv_build_c_compiler_gnu], + [AS_UNSET([ac_cv_c_compiler_gnu])]) + +cross_compiling_build=no + +ac_build_tool_prefix= +AS_IF([test -n "$build"], [ac_build_tool_prefix="$build-"], + [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"]) + +AC_LANG_PUSH([C]) +AC_PROG_CC +_AC_COMPILER_EXEEXT +_AC_COMPILER_OBJEXT +AC_PROG_CPP + +BUILD_EXEEXT=$ac_cv_exeext +BUILD_OBJEXT=$ac_cv_objext + +dnl Restore the old definitions +dnl +popdef([cross_compiling])dnl +popdef([am_cv_prog_cc_c_o])dnl +popdef([am_cv_CC_dependencies_compiler_type])dnl +popdef([ac_tool_prefix])dnl +popdef([ac_cv_host_os])dnl +popdef([ac_cv_host_vendor])dnl +popdef([ac_cv_host_cpu])dnl +popdef([ac_cv_host_alias])dnl +popdef([ac_cv_host])dnl +popdef([host_os])dnl +popdef([host_vendor])dnl +popdef([host_cpu])dnl +popdef([host_alias])dnl +popdef([host])dnl +popdef([LDFLAGS])dnl +popdef([CPPFLAGS])dnl +popdef([CFLAGS])dnl +popdef([GCC])dnl +popdef([CPP])dnl +popdef([CC])dnl +popdef([ac_objext])dnl +popdef([ac_exeext])dnl +popdef([ac_prog_cc_stdc])dnl +popdef([ac_cv_prog_cc_g])dnl +popdef([ac_cv_prog_cc_cross])dnl +popdef([ac_cv_prog_cc_works])dnl +popdef([ac_cv_prog_cc_stdc])dnl +popdef([ac_cv_prog_cc_c23])dnl +popdef([ac_cv_prog_cc_c11])dnl +popdef([ac_cv_prog_cc_c99])dnl +popdef([ac_cv_prog_cc_c89])dnl +popdef([ac_cv_prog_gcc])dnl +popdef([ac_cv_prog_CPP])dnl +dnl +ac_cv_exeext=$ac_cv_host_exeext +EXEEXT=$ac_cv_host_exeext +ac_cv_objext=$ac_cv_host_objext +OBJEXT=$ac_cv_host_objext +ac_cv_c_compiler_gnu=$ac_cv_host_c_compiler_gnu +ac_compiler_gnu=$ac_cv_host_c_compiler_gnu + +dnl restore global variables ac_ext, ac_cpp, ac_compile, +dnl ac_link, ac_compiler_gnu (dependent on the current +dnl language after popping): +AC_LANG_POP([C]) + +dnl Finally, set Makefile variables +dnl +AC_SUBST([BUILD_EXEEXT])dnl +AC_SUBST([BUILD_OBJEXT])dnl +AC_SUBST([CFLAGS_FOR_BUILD])dnl +AC_SUBST([CPPFLAGS_FOR_BUILD])dnl +AC_SUBST([LDFLAGS_FOR_BUILD])dnl +]) diff --git a/build-aux/compile b/build-aux/compile deleted file mode 100755 index a85b723c..00000000 --- a/build-aux/compile +++ /dev/null @@ -1,347 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand '-c -o'. - -scriptversion=2012-10-14.11; # UTC - -# Copyright (C) 1999-2014 Free Software Foundation, Inc. -# Written by Tom Tromey . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -nl=' -' - -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent tools from complaining about whitespace usage. -IFS=" "" $nl" - -file_conv= - -# func_file_conv build_file lazy -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv/,$2, in - *,$file_conv,*) - ;; - mingw/*) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin/*) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine/*) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_cl_dashL linkdir -# Make cl look for libraries in LINKDIR -func_cl_dashL () -{ - func_file_conv "$1" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" -} - -# func_cl_dashl library -# Do a library search-path lookup for cl -func_cl_dashl () -{ - lib=$1 - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - lib=$dir/$lib.dll.lib - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - lib=$dir/$lib.lib - break - fi - if test -f "$dir/lib$lib.a"; then - found=yes - lib=$dir/lib$lib.a - break - fi - done - IFS=$save_IFS - - if test "$found" != yes; then - lib=$lib.lib - fi -} - -# func_cl_wrapper cl arg... -# Adjust compile command to suit cl -func_cl_wrapper () -{ - # Assume a capable shell - lib_path= - shared=: - linker_opts= - for arg - do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - eat=1 - case $2 in - *.o | *.[oO][bB][jJ]) - func_file_conv "$2" - set x "$@" -Fo"$file" - shift - ;; - *) - func_file_conv "$2" - set x "$@" -Fe"$file" - shift - ;; - esac - ;; - -I) - eat=1 - func_file_conv "$2" mingw - set x "$@" -I"$file" - shift - ;; - -I*) - func_file_conv "${1#-I}" mingw - set x "$@" -I"$file" - shift - ;; - -l) - eat=1 - func_cl_dashl "$2" - set x "$@" "$lib" - shift - ;; - -l*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" - shift - ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; - -L*) - func_cl_dashL "${1#-L}" - ;; - -static) - shared=false - ;; - -Wl,*) - arg=${1#-Wl,} - save_ifs="$IFS"; IFS=',' - for flag in $arg; do - IFS="$save_ifs" - linker_opts="$linker_opts $flag" - done - IFS="$save_ifs" - ;; - -Xlinker) - eat=1 - linker_opts="$linker_opts $2" - ;; - -*) - set x "$@" "$1" - shift - ;; - *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) - func_file_conv "$1" - set x "$@" -Tp"$file" - shift - ;; - *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) - func_file_conv "$1" mingw - set x "$@" "$file" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift - done - if test -n "$linker_opts"; then - linker_opts="-link$linker_opts" - fi - exec "$@" $linker_opts - exit 1 -} - -eat= - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand '-c -o'. -Remove '-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file 'INSTALL'. - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) - func_cl_wrapper "$@" # Doesn't return... - ;; -esac - -ofile= -cfile= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - # So we strip '-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no '-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # '.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` - -# Create the lock directory. -# Note: use '[/\\:.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - test "$cofile" = "$ofile" || mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/build-aux/config.guess b/build-aux/config.guess index b1872139..48a68460 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2023 Free Software Foundation, Inc. +# Copyright 1992-2024 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2023-07-20' +timestamp='2024-07-27' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -60,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2023 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -123,7 +123,7 @@ set_cc_for_build() { dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" - for driver in cc gcc c89 c99 ; do + for driver in cc gcc c17 c99 c89 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break @@ -155,6 +155,9 @@ Linux|GNU|GNU/*) set_cc_for_build cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else #include #if defined(__UCLIBC__) LIBC=uclibc @@ -162,6 +165,8 @@ Linux|GNU|GNU/*) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm #else #include /* First heuristic to detect musl libc. */ @@ -169,6 +174,7 @@ Linux|GNU|GNU/*) LIBC=musl #endif #endif + #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" @@ -628,7 +634,8 @@ EOF sed 's/^ //' << EOF > "$dummy.c" #include - main() + int + main () { if (!__power_pc()) exit(1); @@ -712,7 +719,8 @@ EOF #include #include - int main () + int + main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); @@ -904,7 +912,7 @@ EOF fi ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` + UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; @@ -1589,6 +1597,9 @@ EOF *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; esac # Do we have a guess based on uname results? @@ -1612,6 +1623,7 @@ cat > "$dummy.c" <." version="\ GNU config.sub ($timestamp) -Copyright 1992-2023 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -120,7 +120,6 @@ case $# in esac # Split fields of configuration type -# shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 + fi + ;; *) echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 exit 1 ;; esac +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 + exit 1 + ;; +esac + # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. -case $kernel-$os in - linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ - | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- | linux-ohos*- ) ;; - uclinux-uclibc* ) + uclinux-uclibc*- | uclinux-gnu*- ) ;; - managarm-mlibc* | managarm-kernel* ) + managarm-mlibc*- | managarm-kernel*- ) ;; - windows*-gnu* | windows*-msvc*) + windows*-msvc*-) ;; - -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 exit 1 ;; - -kernel* ) + -kernel*- ) echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 exit 1 ;; - *-kernel* ) + *-kernel*- ) echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 exit 1 ;; - *-msvc* ) + *-msvc*- ) echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 exit 1 ;; - kfreebsd*-gnu* | kopensolaris*-gnu*) + kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-) ;; - vxworks-simlinux | vxworks-simwindows | vxworks-spe) + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) ;; - nto-qnx*) + nto-qnx*-) ;; - os2-emx) + os2-emx-) + ;; + rtmk-nova-) ;; - *-eabi* | *-gnueabi*) + *-eabi*- | *-gnueabi*-) ;; - none-coff* | none-elf*) + none--*) # None (no kernel, i.e. freestanding / bare metal), - # can be paired with an output format "OS" + # can be paired with an machine code file format ;; - -*) + -*-) # Blank kernel with real OS is always fine. ;; - *-*) + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 exit 1 ;; @@ -1814,7 +2273,7 @@ case $vendor in *-riscix*) vendor=acorn ;; - *-sunos*) + *-sunos* | *-solaris*) vendor=sun ;; *-cnk* | *-aix*) @@ -1884,7 +2343,7 @@ case $vendor in ;; esac -echo "$cpu-$vendor-${kernel:+$kernel-}$os" +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: diff --git a/build-aux/install-sh b/build-aux/install-sh index 59990a10..b1d7a6f6 100755 --- a/build-aux/install-sh +++ b/build-aux/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2014-09-12.12; # UTC +scriptversion=2024-06-19.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -69,6 +69,11 @@ posix_mkdir= # Desired mode of installed file. mode=0755 +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= @@ -99,19 +104,29 @@ Options: --version display version info and exit. -c (ignored) - -C install only if different (preserve the last data modification time) + -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG -" + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: ." while test $# -ne 0; do case $1 in @@ -137,8 +152,13 @@ while test $# -ne 0; do -o) chowncmd="$chownprog $2" shift;; + -p) cpprog="$cpprog -p";; + -s) stripcmd=$stripprog;; + -S) backupsuffix="$2" + shift;; + -t) is_target_a_directory=always dst_arg=$2 @@ -150,7 +170,7 @@ while test $# -ne 0; do -T) is_target_a_directory=never;; - --version) echo "$0 $scriptversion"; exit $?;; + --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;; --) shift break;; @@ -255,6 +275,10 @@ do dstdir=$dst test -d "$dstdir" dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command @@ -271,15 +295,18 @@ do fi dst=$dst_arg - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. + # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst - dst=$dstdir/`basename "$src"` + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac dstdir_status=0 else dstdir=`dirname "$dst"` @@ -288,27 +315,16 @@ do fi fi + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then @@ -318,50 +334,49 @@ do fi posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - # $RANDOM is not portable (e.g. dash); use it when possible to - # lower collision chance - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 - - # As "mkdir -p" follows symlinks and we work in /tmp possibly; so - # create the $tmpdir first (and fail if unsuccessful) to make sure - # that nobody tries to guess the $tmpdir name. - if (umask $mkdir_umask && - $mkdirprog $mkdir_mode "$tmpdir" && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - test_tmpdir="$tmpdir/a" - ls_ld_tmpdir=`ls -ld "$test_tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null - fi - trap '' 0;; - esac;; + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibility with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; esac if @@ -372,7 +387,7 @@ do then : else - # The umask is ridiculous, or mkdir does not conform to POSIX, + # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. @@ -401,7 +416,7 @@ do prefixes= else if $posix_mkdir; then - (umask=$mkdir_umask && + (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 @@ -434,14 +449,25 @@ do else # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # @@ -467,6 +493,13 @@ do then rm -f "$dsttmp" else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || @@ -481,9 +514,9 @@ do # file should still install successfully. { test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || + $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 @@ -500,9 +533,9 @@ do done # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/build-aux/libtool.m4 b/build-aux/libtool.m4 index ab2fd56b..8d323b3e 100644 --- a/build-aux/libtool.m4 +++ b/build-aux/libtool.m4 @@ -1,6 +1,7 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Copyright (C) 1996-2001, 2003-2019, 2021-2024 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -8,13 +9,13 @@ # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2024 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or +# the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you @@ -31,7 +32,7 @@ m4_define([_LT_COPYING], [dnl # along with this program. If not, see . ]) -# serial 58 LT_INIT +# serial 63 LT_INIT # LT_PREREQ(VERSION) @@ -59,7 +60,7 @@ esac # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], -[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +[AC_PREREQ([2.64])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl @@ -181,6 +182,7 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_DECL_FILECMD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl @@ -219,8 +221,8 @@ esac ofile=libtool can_build_shared=yes -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). +# All known linkers require a '.a' archive for static linking (except MSVC and +# ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld @@ -649,7 +651,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. -Copyright (C) 2011 Free Software Foundation, Inc. +Copyright (C) 2024 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -777,7 +779,7 @@ _LT_EOF # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ + $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || @@ -972,6 +974,7 @@ _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE + # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ @@ -1022,6 +1025,21 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ rm -f conftest.* fi]) + # Feature test to disable chained fixups since it is not + # compatible with '-undefined dynamic_lookup' + AC_CACHE_CHECK([for -no_fixup_chains linker flag], + [lt_cv_support_no_fixup_chains], + [ save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([],[])], + lt_cv_support_no_fixup_chains=yes, + lt_cv_support_no_fixup_chains=no + ) + LDFLAGS=$save_LDFLAGS + ] + ) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no @@ -1041,12 +1059,12 @@ int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF -int main() { return 0;} +int main(void) { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err @@ -1066,23 +1084,37 @@ _LT_EOF _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[[012]][[,.]]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + darwin*) + case $MACOSX_DEPLOYMENT_TARGET,$host in + 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + *) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' + if test yes = "$lt_cv_support_no_fixup_chains"; then + AS_VAR_APPEND([_lt_dar_allow_undefined], [' $wl-no_fixup_chains']) + fi + ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi + _lt_dar_needs_single_mod=no + case $host_os in + rhapsody* | darwin1.*) + _lt_dar_needs_single_mod=yes ;; + darwin*) + # When targeting Mac OS X 10.4 (darwin 8) or later, + # -single_module is the default and -multi_module is unsupported. + # The toolchain on macOS 10.14 (darwin 18) and later cannot + # target any OS version that needs -single_module. + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*-darwin[[567]].*|10.[[0-3]],*-darwin[[5-9]].*|10.[[0-3]],*-darwin1[[0-7]].*) + _lt_dar_needs_single_mod=yes ;; + esac + ;; + esac if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else @@ -1125,12 +1157,12 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], -[ if test yes != "$lt_cv_apple_cc_single_mod"; then +[ if test yes = "$_lt_dar_needs_single_mod" -a yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else @@ -1244,7 +1276,8 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) +[m4_require([_LT_DECL_SED])dnl +AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot @@ -1257,11 +1290,13 @@ lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` + # Trim trailing / since we'll always append absolute paths and we want + # to avoid //, if only for less confusing output for the user. + lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` fi ;; #( /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( @@ -1291,7 +1326,7 @@ ia64-*-hpux*) # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; @@ -1308,7 +1343,7 @@ ia64-*-hpux*) echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; @@ -1320,7 +1355,7 @@ ia64-*-hpux*) ;; esac else - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; @@ -1342,7 +1377,7 @@ mips64*-*linux*) echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; @@ -1350,7 +1385,7 @@ mips64*-*linux*) emul="${emul}64" ;; esac - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; @@ -1358,7 +1393,7 @@ mips64*-*linux*) emul="${emul}ltsmip" ;; esac - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; @@ -1369,7 +1404,7 @@ mips64*-*linux*) ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) +s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when @@ -1378,14 +1413,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in + case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in + x86_64-*linux*|x86_64-gnu*) + case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; @@ -1413,7 +1448,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; - x86_64-*linux*) + x86_64-*linux*|x86_64-gnu*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) @@ -1453,7 +1488,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in + case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) @@ -1492,9 +1527,22 @@ need_locks=$enable_libtool_lock m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} -: ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +# Use ARFLAGS variable as AR's operation code to sync the variable naming with +# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have +# higher priority because that's what people were doing historically (setting +# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS +# variable obsoleted/removed. + +test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} +lt_ar_flags=$AR_FLAGS +_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) + +# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override +# by AR_FLAGS because that was never working and AR_FLAGS is about to die. +_LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], + [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no @@ -1533,7 +1581,7 @@ AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) -AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_REQUIRE([AC_PROG_RANLIB]) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) @@ -1544,15 +1592,8 @@ old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in @@ -1684,14 +1725,14 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. + gnu* | ironclad*) + # Under GNU Hurd and Ironclad, this test is not required because there + # is no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; - cygwin* | mingw* | cegcc*) + cygwin* | mingw* | windows* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, @@ -1713,7 +1754,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=8192; ;; - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -1756,7 +1797,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi @@ -1873,11 +1914,11 @@ else /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); +int fnord (void) __attribute__((visibility("default"))); #endif -int fnord () { return 42; } -int main () +int fnord (void) { return 42; } +int main (void) { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; @@ -1934,7 +1975,7 @@ else lt_cv_dlopen_self=yes ;; - mingw* | pw32* | cegcc*) + mingw* | windows* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; @@ -2206,26 +2247,35 @@ m4_defun([_LT_CMD_STRIPLIB], striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) +if test -z "$STRIP"; then + AC_MSG_RESULT([no]) else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then + if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) + else + case $host_os in + darwin*) + # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) - else + ;; + freebsd*) + if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac + ;; + esac + fi fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) @@ -2293,7 +2343,7 @@ if test yes = "$GCC"; then *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` @@ -2351,7 +2401,7 @@ BEGIN {RS = " "; FS = "/|\n";} { # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` @@ -2426,7 +2476,7 @@ aix[[4-9]]*) # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # linker flag in LDFLAGS as well, or --enable-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the @@ -2520,7 +2570,7 @@ bsdi[[45]]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32* | cegcc*) +cygwin* | mingw* | windows* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no @@ -2531,15 +2581,29 @@ cygwin* | mingw* | pw32* | cegcc*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' + # If user builds GCC with multilib enabled, + # it should just install on $(libdir) + # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones. + if test xyes = x"$multilib"; then + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + $install_prog $dir/$dlname $destdir/$dlname~ + chmod a+x $destdir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib $destdir/$dlname'\'' || exit \$?; + fi' + else + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + fi postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' @@ -2548,30 +2612,30 @@ cygwin* | mingw* | pw32* | cegcc*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; - mingw* | cegcc*) + mingw* | windows* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; - *,cl*) - # Native MSVC + *,cl* | *,icl*) + # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in - mingw*) + mingw* | windows*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' @@ -2584,7 +2648,7 @@ m4_if([$1], [],[ done IFS=$lt_save_ifs # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form @@ -2621,7 +2685,7 @@ m4_if([$1], [],[ ;; *) - # Assume MSVC wrapper + # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; @@ -2654,7 +2718,7 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd* | dragonfly*) +freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then @@ -2678,7 +2742,21 @@ freebsd* | dragonfly*) need_version=yes ;; esac - shlibpath_var=LD_LIBRARY_PATH + case $host_cpu in + powerpc64) + # On FreeBSD bi-arch platforms, a different variable is used for 32-bit + # binaries. See . + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[int test_pointer_size[sizeof (void *) - 5]; + ]])], + [shlibpath_var=LD_LIBRARY_PATH], + [shlibpath_var=LD_32_LIBRARY_PATH]) + ;; + *) + shlibpath_var=LD_LIBRARY_PATH + ;; + esac case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes @@ -2708,8 +2786,9 @@ haiku*) soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes + sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib' + sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib' + hardcode_into_libs=no ;; hpux9* | hpux10* | hpux11*) @@ -2819,7 +2898,7 @@ linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext' + library_names_spec='$libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH @@ -2831,8 +2910,9 @@ linux*android*) hardcode_into_libs=yes dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + # -rpath works at least for libraries that are not overridden by + # libraries installed in system locations. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; # This must be glibc/ELF. @@ -2890,8 +2970,8 @@ netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -2916,6 +2996,18 @@ netbsd*) hardcode_into_libs=yes ;; +*-mlibc) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='mlibc ld.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' @@ -2935,7 +3027,7 @@ newsos6) dynamic_linker='ldqnx.so' ;; -openbsd* | bitrig*) +openbsd*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no @@ -2995,6 +3087,17 @@ rdos*) dynamic_linker=no ;; +serenity*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + dynamic_linker='SerenityOS LibELF' + ;; + solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no @@ -3092,6 +3195,21 @@ uts4*) shlibpath_var=LD_LIBRARY_PATH ;; +emscripten*) + version_type=none + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + dynamic_linker="Emscripten linker" + _LT_COMPILER_PIC($1)='-fPIC' + _LT_TAGVAR(archive_cmds, $1)='$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib -s EXPORTED_FUNCTIONS=@$output_objdir/$soname.expsym' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(no_undefined_flag, $1)= + ;; + *) dynamic_linker=no ;; @@ -3267,7 +3385,7 @@ if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in - *-*-mingw*) + *-*-mingw* | *-*-windows*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) @@ -3376,7 +3494,7 @@ case $reload_flag in esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | mingw* | windows* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi @@ -3448,7 +3566,6 @@ lt_cv_deplibs_check_method='unknown' # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure @@ -3465,7 +3582,7 @@ beos*) bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; @@ -3475,7 +3592,7 @@ cygwin*) lt_cv_file_magic_cmd='func_win32_libid' ;; -mingw* | pw32*) +mingw* | windows* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. @@ -3484,7 +3601,7 @@ mingw* | pw32*) lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; @@ -3499,14 +3616,14 @@ darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; -freebsd* | dragonfly*) +freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac @@ -3520,7 +3637,7 @@ haiku*) ;; hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' @@ -3557,6 +3674,10 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; +*-mlibc) + lt_cv_deplibs_check_method=pass_all + ;; + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' @@ -3567,7 +3688,7 @@ netbsd* | netbsdelf*-gnu) newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; @@ -3575,7 +3696,7 @@ newos6*) lt_cv_deplibs_check_method=pass_all ;; -openbsd* | bitrig*) +openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else @@ -3591,6 +3712,10 @@ rdos*) lt_cv_deplibs_check_method=pass_all ;; +serenity*) + lt_cv_deplibs_check_method=pass_all + ;; + solaris*) lt_cv_deplibs_check_method=pass_all ;; @@ -3639,7 +3764,7 @@ file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in - mingw* | pw32*) + mingw* | windows* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else @@ -3691,16 +3816,16 @@ else # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; + mingw* | windows*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 @@ -3726,7 +3851,7 @@ else # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; @@ -3782,7 +3907,7 @@ lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in -cygwin* | mingw* | pw32* | cegcc*) +cygwin* | mingw* | windows* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in @@ -3814,16 +3939,16 @@ _LT_DECL([], [sharedlib_from_linklib_cmd], [1], m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_manifest_tool], + [lt_cv_path_manifest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes + lt_cv_path_manifest_tool=yes fi rm -f conftest*]) -if test yes != "$lt_cv_path_mainfest_tool"; then +if test yes != "$lt_cv_path_manifest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl @@ -3852,7 +3977,7 @@ AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-mingw* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) @@ -3927,7 +4052,7 @@ case $host_os in aix*) symcode='[[BCDT]]' ;; -cygwin* | mingw* | pw32* | cegcc*) +cygwin* | mingw* | windows* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) @@ -3942,7 +4067,7 @@ osf*) symcode='[[BCDEGQRST]]' ;; solaris*) - symcode='[[BDRT]]' + symcode='[[BCDRT]]' ;; sco3.2v5*) symcode='[[DT]]' @@ -3966,7 +4091,7 @@ esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" @@ -3984,20 +4109,20 @@ fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ @@ -4006,7 +4131,7 @@ $lt_c_name_lib_hook\ # Handle CRLF in mingw tool chain opt_cr= case $build_os in -mingw*) +mingw* | windows*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac @@ -4021,7 +4146,7 @@ for ac_symprfx in "" "_"; do if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, + # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ @@ -4039,9 +4164,9 @@ for ac_symprfx in "" "_"; do " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no @@ -4057,13 +4182,14 @@ void nm_test_func(void){} #ifdef __cplusplus } #endif -int main(){nm_test_var='a';nm_test_func();return(0);} +int main(void){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -4233,7 +4359,7 @@ m4_if([$1], [CXX], [ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) + mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -4309,7 +4435,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) + mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], @@ -4328,7 +4454,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - freebsd* | dragonfly*) + freebsd* | dragonfly* | midnightbsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) @@ -4411,7 +4537,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' @@ -4437,6 +4563,8 @@ m4_if([$1], [CXX], [ ;; netbsd* | netbsdelf*-gnu) ;; + *-mlibc) + ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. @@ -4465,6 +4593,8 @@ m4_if([$1], [CXX], [ ;; psos*) ;; + serenity*) + ;; solaris*) case $cc_basename in CC* | sunCC*) @@ -4557,7 +4687,7 @@ m4_if([$1], [CXX], [ # PIC is the default for these OSes. ;; - mingw* | cygwin* | pw32* | os2* | cegcc*) + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -4661,7 +4791,7 @@ m4_if([$1], [CXX], [ esac ;; - mingw* | cygwin* | pw32* | os2* | cegcc*) + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], @@ -4703,6 +4833,12 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; + *flang* | ftn | f18* | f95*) + # Flang compiler. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) @@ -4747,7 +4883,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' @@ -4785,6 +4921,12 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; + *-mlibc) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. @@ -4801,6 +4943,9 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; + serenity*) + ;; + solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' @@ -4930,15 +5075,15 @@ m4_if([$1], [CXX], [ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; - cygwin* | mingw* | cegcc*) + cygwin* | mingw* | windows* | cegcc*) case $cc_basename in - cl*) + cl* | icl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) @@ -4947,9 +5092,6 @@ m4_if([$1], [CXX], [ ;; esac ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; @@ -4997,24 +5139,18 @@ dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time + cygwin* | mingw* | windows* | pw32* | cegcc*) + # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. + # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) + # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes @@ -5061,7 +5197,7 @@ dnl Note also adjust exclude_expsyms for C++ above. _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no - case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -5115,7 +5251,7 @@ _LT_EOF fi ;; - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | mingw* | windows* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' @@ -5125,6 +5261,7 @@ _LT_EOF _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + _LT_TAGVAR(file_list_spec, $1)='@' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' @@ -5144,7 +5281,7 @@ _LT_EOF haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=no ;; os2*) @@ -5171,8 +5308,9 @@ _LT_EOF cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' ;; interix[[3-9]]*) @@ -5187,7 +5325,7 @@ _LT_EOF # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) @@ -5230,7 +5368,7 @@ _LT_EOF _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes @@ -5242,13 +5380,14 @@ _LT_EOF if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) @@ -5258,7 +5397,7 @@ _LT_EOF _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi @@ -5269,6 +5408,11 @@ _LT_EOF fi ;; + *-mlibc) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' @@ -5390,7 +5534,7 @@ _LT_EOF if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no @@ -5571,14 +5715,14 @@ _LT_EOF _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | mingw* | windows* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. + # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in - cl*) - # Native MSVC + cl* | icl*) + # Native MSVC or ICC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes @@ -5588,14 +5732,14 @@ _LT_EOF # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_cmds, $1)='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + $CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' @@ -5619,7 +5763,7 @@ _LT_EOF fi' ;; *) - # Assume MSVC wrapper + # Assume MSVC and ICC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. @@ -5667,7 +5811,7 @@ _LT_EOF ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) + freebsd* | dragonfly* | midnightbsd*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes @@ -5790,7 +5934,6 @@ _LT_EOF if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi - _LT_TAGVAR(link_all_deplibs, $1)=no else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' @@ -5808,10 +5951,14 @@ _LT_EOF # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; esac ;; + *-mlibc) + ;; + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out @@ -5834,7 +5981,7 @@ _LT_EOF *nto* | *qnx*) ;; - openbsd* | bitrig*) + openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -5877,8 +6024,9 @@ _LT_EOF cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' ;; osf3*) @@ -5912,6 +6060,9 @@ _LT_EOF _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; + serenity*) + ;; + solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then @@ -6170,7 +6321,7 @@ _LT_TAGDECL([], [hardcode_direct], [0], _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting $shlibpath_var if the + "absolute", i.e. impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR @@ -6228,7 +6379,7 @@ _LT_TAGVAR(objext, $1)=$objext lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' +lt_simple_link_test_code='int main(void){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other @@ -6417,8 +6568,7 @@ if test yes != "$_lt_caught_CXX_error"; then wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= @@ -6438,7 +6588,7 @@ if test yes != "$_lt_caught_CXX_error"; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else GXX=no @@ -6647,10 +6797,10 @@ if test yes != "$_lt_caught_CXX_error"; then esac ;; - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | mingw* | windows* | pw32* | cegcc*) case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC + ,cl* | no,cl* | ,icl* | no,icl*) + # Native MSVC or ICC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' @@ -6700,6 +6850,7 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' @@ -6746,8 +6897,9 @@ if test yes != "$_lt_caught_CXX_error"; then cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' ;; dgux*) @@ -6778,7 +6930,7 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; - freebsd* | dragonfly*) + freebsd* | dragonfly* | midnightbsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes @@ -6786,7 +6938,7 @@ if test yes != "$_lt_caught_CXX_error"; then haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=no ;; hpux9*) @@ -6813,7 +6965,7 @@ if test yes != "$_lt_caught_CXX_error"; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -6878,7 +7030,7 @@ if test yes != "$_lt_caught_CXX_error"; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " [[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -6915,7 +7067,7 @@ if test yes != "$_lt_caught_CXX_error"; then # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in @@ -7055,13 +7207,13 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' @@ -7110,6 +7262,10 @@ if test yes != "$_lt_caught_CXX_error"; then esac ;; + *-mlibc) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' @@ -7126,7 +7282,7 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(ld_shlibs, $1)=yes ;; - openbsd* | bitrig*) + openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -7217,7 +7373,7 @@ if test yes != "$_lt_caught_CXX_error"; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else # FIXME: insert proper C++ library support @@ -7232,6 +7388,9 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(ld_shlibs, $1)=no ;; + serenity*) + ;; + sunos4*) case $cc_basename in CC*) @@ -7301,7 +7460,7 @@ if test yes != "$_lt_caught_CXX_error"; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. @@ -7312,7 +7471,7 @@ if test yes != "$_lt_caught_CXX_error"; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' @@ -7550,10 +7709,11 @@ if AC_TRY_EVAL(ac_compile); then case $prev$p in -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. + # Some compilers place space between "-{L,R,l}" and the path. # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then + if test x-L = x"$p" || + test x-R = x"$p" || + test x-l = x"$p"; then prev=$p continue fi @@ -8207,6 +8367,14 @@ _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) +# _LT_DECL_FILECMD +# ---------------- +# Check for a file(cmd) program that can be used to detect file type and magic +m4_defun([_LT_DECL_FILECMD], +[AC_CHECK_PROG([FILECMD], [file], [file], [:]) +_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) +])# _LD_DECL_FILECMD + # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates @@ -8219,73 +8387,6 @@ _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f "$lt_ac_sed" && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test 10 -lt "$lt_ac_count" && break - lt_ac_count=`expr $lt_ac_count + 1` - if test "$lt_ac_count" -gt "$lt_ac_max"; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) @@ -8332,7 +8433,7 @@ AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in - *-*-mingw* ) # actually msys + *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) @@ -8345,7 +8446,7 @@ AC_CACHE_VAL(lt_cv_to_host_file_cmd, ;; *-*-cygwin* ) case $build in - *-*-mingw* ) # actually msys + *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) @@ -8371,9 +8472,9 @@ AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in - *-*-mingw* ) + *-*-mingw* | *-*-windows* ) case $build in - *-*-mingw* ) # actually msys + *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh index 22589375..939e672e 100644 --- a/build-aux/ltmain.sh +++ b/build-aux/ltmain.sh @@ -1,12 +1,12 @@ -#! /bin/sh +#! /usr/bin/env sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in -## by inline-source v2014-01-03.01 +## by inline-source v2019-02-19.15 -# libtool (GNU libtool) 2.4.6 +# libtool (GNU libtool) 2.5.4 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# Copyright (C) 1996-2019, 2021-2024 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -31,8 +31,8 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.6 Debian-2.4.6-2.1" -package_revision=2.4.6 +VERSION=2.5.4 +package_revision=2.5.4 ## ------ ## @@ -64,34 +64,25 @@ package_revision=2.4.6 # libraries, which are installed to $pkgauxdir. # Set a version string for this script. -scriptversion=2015-10-12.13; # UTC +scriptversion=2019-02-19.15; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 -# Copyright (C) 2004-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. - -# As a special exception to the GNU General Public License, if you distribute -# this file as part of a program or library that is built using GNU Libtool, -# you may include this file under the same distribution terms that you use -# for the rest of that program. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# This is free software. There is NO warranty; not even for +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Copyright (C) 2004-2019, 2021, 2023-2024 Bootstrap Authors +# +# This file is dual licensed under the terms of the MIT license +# , and GPL version 2 or later +# . You must apply one of +# these licenses when using or redistributing this software or any of +# the files within it. See the URLs above, or the file `LICENSE` +# included in the Bootstrap distribution for the full license texts. -# Please report bugs or propose patches to gary@gnu.org. +# Please report bugs or propose patches to: +# ## ------ ## @@ -139,9 +130,12 @@ do _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +# These NLS vars are set unconditionally (bootstrap issue #24). Unset those +# in case the environment reset is needed later and the $save_* variant is not +# defined (see the code above). +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL # Make sure IFS has a sensible default sp=' ' @@ -149,7 +143,7 @@ nl=' ' IFS="$sp $nl" -# There are apparently some retarded systems that use ';' as a PATH separator! +# There are apparently some systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { @@ -159,6 +153,26 @@ if test "${PATH_SEPARATOR+set}" != set; then fi +# func_unset VAR +# -------------- +# Portably unset VAR. +# In some shells, an 'unset VAR' statement leaves a non-zero return +# status if VAR is already unset, which might be problematic if the +# statement is used at the end of a function (thus poisoning its return +# value) or when 'set -e' is active (causing even a spurious abort of +# the script in this case). +func_unset () +{ + { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } +} + + +# Make sure CDPATH doesn't cause `cd` commands to output the target dir. +func_unset CDPATH + +# Make sure ${,E,F}GREP behave sanely. +func_unset GREP_OPTIONS + ## ------------------------- ## ## Locate command utilities. ## @@ -259,7 +273,7 @@ test -z "$SED" && { rm -f conftest.in conftest.tmp conftest.nl conftest.out } - func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" rm -f conftest.sed SED=$func_path_progs_result } @@ -295,7 +309,7 @@ test -z "$GREP" && { rm -f conftest.in conftest.tmp conftest.nl conftest.out } - func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" GREP=$func_path_progs_result } @@ -360,6 +374,35 @@ sed_double_backslash="\ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" +# require_check_ifs_backslash +# --------------------------- +# Check if we can use backslash as IFS='\' separator, and set +# $check_ifs_backshlash_broken to ':' or 'false'. +require_check_ifs_backslash=func_require_check_ifs_backslash +func_require_check_ifs_backslash () +{ + _G_save_IFS=$IFS + IFS='\' + _G_check_ifs_backshlash='a\\b' + for _G_i in $_G_check_ifs_backshlash + do + case $_G_i in + a) + check_ifs_backshlash_broken=false + ;; + '') + break + ;; + *) + check_ifs_backshlash_broken=: + break + ;; + esac + done + IFS=$_G_save_IFS + require_check_ifs_backslash=: +} + ## ----------------- ## ## Global variables. ## @@ -1100,6 +1143,8 @@ func_quote_portable () { $debug_cmd + $require_check_ifs_backslash + func_quote_portable_result=$2 # one-time-loop (easy break) @@ -1114,9 +1159,12 @@ func_quote_portable () # Quote for eval. case $func_quote_portable_result in *[\\\`\"\$]*) - case $func_quote_portable_result in - *[\[\*\?]*) - func_quote_portable_result=`$ECHO "$func_quote_portable_result" | $SED "$sed_quote_subst"` + # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string + # contains the shell wildcard characters. + case $check_ifs_backshlash_broken$func_quote_portable_result in + :*|*[\[\*\?]*) + func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ + | $SED "$sed_quote_subst"` break ;; esac @@ -1171,10 +1219,27 @@ func_quote_portable () # Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', # but optimized for speed. Result is stored in $func_quotefast_eval. if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then - func_quotefast_eval () - { - printf -v func_quotefast_eval_result %q "$1" - } + printf -v _GL_test_printf_tilde %q '~' + if test '\~' = "$_GL_test_printf_tilde"; then + func_quotefast_eval () + { + printf -v func_quotefast_eval_result %q "$1" + } + else + # Broken older Bash implementations. Make those faster too if possible. + func_quotefast_eval () + { + case $1 in + '~'*) + func_quote_portable false "$1" + func_quotefast_eval_result=$func_quote_portable_result + ;; + *) + printf -v func_quotefast_eval_result %q "$1" + ;; + esac + } + fi else func_quotefast_eval () { @@ -1186,7 +1251,7 @@ fi # func_quote_arg MODEs ARG # ------------------------ -# Quote one ARG to be evaled later. MODEs argument may contain zero ore more +# Quote one ARG to be evaled later. MODEs argument may contain zero or more # specifiers listed below separated by ',' character. This function returns two # values: # i) func_quote_arg_result @@ -1203,8 +1268,8 @@ fi # - the same as 'eval'; but do not quote variable references # 'pretty' # - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might -# later used in func_quote to get output like: 'echo "a b"' instead of -# 'echo a\ b'. This is slower than default on some shells. +# be used later in func_quote to get output like: 'echo "a b"' instead +# of 'echo a\ b'. This is slower than default on some shells. # 'unquoted' # - produce also $func_quote_arg_unquoted_result which does not contain # wrapping double-quotes. @@ -1465,30 +1530,26 @@ func_lt_ver () # End: #! /bin/sh -# Set a version string for this script. -scriptversion=2015-10-12.13; # UTC - # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 -# Copyright (C) 2010-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This is free software. There is NO warranty; not even for +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Copyright (C) 2010-2019, 2021, 2023-2024 Bootstrap Authors +# +# This file is dual licensed under the terms of the MIT license +# , and GPL version 2 or later +# . You must apply one of +# these licenses when using or redistributing this software or any of +# the files within it. See the URLs above, or the file `LICENSE` +# included in the Bootstrap distribution for the full license texts. -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# Please report bugs or propose patches to: +# -# Please report bugs or propose patches to gary@gnu.org. +# Set a version string for this script. +scriptversion=2019-02-19.15; # UTC ## ------ ## @@ -1511,7 +1572,7 @@ scriptversion=2015-10-12.13; # UTC # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file -# starting with '# Written by ' and ending with '# warranty; '. +# starting with '# Written by ' and ending with '# Copyright'. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the @@ -1523,7 +1584,7 @@ scriptversion=2015-10-12.13; # UTC # to display verbose messages only when your user has specified # '--verbose'. # -# After sourcing this file, you can plug processing for additional +# After sourcing this file, you can plug in processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. @@ -1572,8 +1633,8 @@ fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## # This section contains functions for adding, removing, and running hooks -# to the main code. A hook is just a named list of of function, that can -# be run in order later on. +# in the main code. A hook is just a list of function names that can be +# run in order later on. # func_hookable FUNC_NAME # ----------------------- @@ -1606,7 +1667,8 @@ func_add_hook () # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ -# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +# Remove HOOK_FUNC from the list of hook functions to be called by +# FUNC_NAME. func_remove_hook () { $debug_cmd @@ -1615,10 +1677,28 @@ func_remove_hook () } +# func_propagate_result FUNC_NAME_A FUNC_NAME_B +# --------------------------------------------- +# If the *_result variable of FUNC_NAME_A _is set_, assign its value to +# *_result variable of FUNC_NAME_B. +func_propagate_result () +{ + $debug_cmd + + func_propagate_result_result=: + if eval "test \"\${${1}_result+set}\" = set" + then + eval "${2}_result=\$${1}_result" + else + func_propagate_result_result=false + fi +} + + # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. -# It is assumed that the list of hook functions contains nothing more +# It's assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. @@ -1626,26 +1706,21 @@ func_run_hooks () { $debug_cmd - _G_rc_run_hooks=false - case " $hookable_fns " in *" $1 "*) ;; - *) func_fatal_error "'$1' does not support hook functions.n" ;; + *) func_fatal_error "'$1' does not support hook functions." ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do - if eval $_G_hook '"$@"'; then - # store returned options list back into positional - # parameters for next 'cmd' execution. - eval _G_hook_result=\$${_G_hook}_result - eval set dummy "$_G_hook_result"; shift - _G_rc_run_hooks=: + func_unset "${_G_hook}_result" + eval $_G_hook '${1+"$@"}' + func_propagate_result $_G_hook func_run_hooks + if $func_propagate_result_result; then + eval set dummy "$func_run_hooks_result"; shift fi done - - $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result } @@ -1655,14 +1730,16 @@ func_run_hooks () ## --------------- ## # In order to add your own option parsing hooks, you must accept the -# full positional parameter list in your hook function, you may remove/edit -# any options that you action, and then pass back the remaining unprocessed -# options in '_result', escaped suitably for -# 'eval'. In this case you also must return $EXIT_SUCCESS to let the -# hook's caller know that it should pay attention to -# '_result'. Returning $EXIT_FAILURE signalizes that -# arguments are left untouched by the hook and therefore caller will ignore the -# result variable. +# full positional parameter list from your hook function. You may remove +# or edit any options that you action, and then pass back the remaining +# unprocessed options in '_result', escaped +# suitably for 'eval'. +# +# The '_result' variable is automatically unset +# before your hook gets called; for best performance, only set the +# *_result variable when necessary (i.e. don't call the 'func_quote' +# function unnecessarily because it can be an expensive operation on some +# machines). # # Like this: # @@ -1674,11 +1751,8 @@ func_run_hooks () # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' -# # No change in '$@' (ignored completely by this hook). There is -# # no need to do the equivalent (but slower) action: -# # func_quote eval ${1+"$@"} -# # my_options_prep_result=$func_quote_result -# false +# # No change in '$@' (ignored completely by this hook). Leave +# # my_options_prep_result variable intact. # } # func_add_hook func_options_prep my_options_prep # @@ -1689,7 +1763,7 @@ func_run_hooks () # # args_changed=false # -# # Note that for efficiency, we parse as many options as we can +# # Note that, for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do @@ -1706,18 +1780,17 @@ func_run_hooks () # args_changed=: # ;; # *) # Make sure the first unrecognised option "$_G_opt" -# # is added back to "$@", we could need that later -# # if $args_changed is true. +# # is added back to "$@" in case we need it later, +# # if $args_changed was set to 'true'. # set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # +# # Only call 'func_quote' here if we processed at least one argument. # if $args_changed; then # func_quote eval ${1+"$@"} # my_silent_option_result=$func_quote_result # fi -# -# $args_changed # } # func_add_hook func_parse_options my_silent_option # @@ -1728,8 +1801,6 @@ func_run_hooks () # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." -# -# false # } # func_add_hook func_validate_options my_option_validation # @@ -1745,13 +1816,8 @@ func_options_finish () { $debug_cmd - _G_func_options_finish_exit=false - if func_run_hooks func_options ${1+"$@"}; then - func_options_finish_result=$func_run_hooks_result - _G_func_options_finish_exit=: - fi - - $_G_func_options_finish_exit + func_run_hooks func_options ${1+"$@"} + func_propagate_result func_run_hooks func_options_finish } @@ -1764,28 +1830,27 @@ func_options () { $debug_cmd - _G_rc_options=false + _G_options_quoted=false for my_func in options_prep parse_options validate_options options_finish do - if eval func_$my_func '${1+"$@"}'; then - eval _G_res_var='$'"func_${my_func}_result" - eval set dummy "$_G_res_var" ; shift - _G_rc_options=: + func_unset func_${my_func}_result + func_unset func_run_hooks_result + eval func_$my_func '${1+"$@"}' + func_propagate_result func_$my_func func_options + if $func_propagate_result_result; then + eval set dummy "$func_options_result"; shift + _G_options_quoted=: fi done - # Save modified positional parameters for caller. As a top-level - # options-parser function we always need to set the 'func_options_result' - # variable (regardless the $_G_rc_options value). - if $_G_rc_options; then - func_options_result=$_G_res_var - else + $_G_options_quoted || { + # As we (func_options) are top-level options-parser function and + # nobody quoted "$@" for us yet, we need to do it explicitly for + # caller. func_quote eval ${1+"$@"} func_options_result=$func_quote_result - fi - - $_G_rc_options + } } @@ -1795,8 +1860,7 @@ func_options () # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propagate that back to rest of this script, then the complete -# modified list must be put in 'func_run_hooks_result' before -# returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned). +# modified list must be put in 'func_run_hooks_result' before returning. func_hookable func_options_prep func_options_prep () { @@ -1806,14 +1870,8 @@ func_options_prep () opt_verbose=false opt_warning_types= - _G_rc_options_prep=false - if func_run_hooks func_options_prep ${1+"$@"}; then - _G_rc_options_prep=: - # save modified positional parameters for caller - func_options_prep_result=$func_run_hooks_result - fi - - $_G_rc_options_prep + func_run_hooks func_options_prep ${1+"$@"} + func_propagate_result func_run_hooks func_options_prep } @@ -1825,27 +1883,32 @@ func_parse_options () { $debug_cmd - func_parse_options_result= - - _G_rc_parse_options=false + _G_parse_options_requote=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. - if func_run_hooks func_parse_options ${1+"$@"}; then - eval set dummy "$func_run_hooks_result"; shift - _G_rc_parse_options=: + func_run_hooks func_parse_options ${1+"$@"} + func_propagate_result func_run_hooks func_parse_options + if $func_propagate_result_result; then + eval set dummy "$func_parse_options_result"; shift + # Even though we may have changed "$@", we passed the "$@" array + # down into the hook and it quoted it for us (because we are in + # this if-branch). No need to quote it again. + _G_parse_options_requote=false fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break + # We expect that one of the options parsed in this function matches + # and thus we remove _G_opt from "$@" and need to re-quote. _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' - func_echo "enabling shell trace mode" + func_echo "enabling shell trace mode" >&2 $debug_cmd ;; @@ -1856,7 +1919,7 @@ func_parse_options () --warnings|--warning|-W) if test $# = 0 && func_missing_arg $_G_opt; then - _G_rc_parse_options=: + _G_parse_options_requote=: break fi case " $warning_categories $1" in @@ -1911,7 +1974,7 @@ func_parse_options () shift ;; - --) _G_rc_parse_options=: ; break ;; + --) _G_parse_options_requote=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift _G_match_parse_options=false @@ -1919,17 +1982,16 @@ func_parse_options () ;; esac - $_G_match_parse_options && _G_rc_parse_options=: + if $_G_match_parse_options; then + _G_parse_options_requote=: + fi done - - if $_G_rc_parse_options; then + if $_G_parse_options_requote; then # save modified positional parameters for caller func_quote eval ${1+"$@"} func_parse_options_result=$func_quote_result fi - - $_G_rc_parse_options } @@ -1942,21 +2004,14 @@ func_validate_options () { $debug_cmd - _G_rc_validate_options=false - # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - if func_run_hooks func_validate_options ${1+"$@"}; then - # save modified positional parameters for caller - func_validate_options_result=$func_run_hooks_result - _G_rc_validate_options=: - fi + func_run_hooks func_validate_options ${1+"$@"} + func_propagate_result func_run_hooks func_validate_options # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE - - $_G_rc_validate_options } @@ -2012,8 +2067,8 @@ func_missing_arg () # func_split_equals STRING # ------------------------ -# Set func_split_equals_lhs and func_split_equals_rhs shell variables after -# splitting STRING at the '=' sign. +# Set func_split_equals_lhs and func_split_equals_rhs shell variables +# after splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ @@ -2028,8 +2083,9 @@ then func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} - test "x$func_split_equals_lhs" = "x$1" \ - && func_split_equals_rhs= + if test "x$func_split_equals_lhs" = "x$1"; then + func_split_equals_rhs= + fi }' else # ...otherwise fall back to using expr, which is often a shell builtin. @@ -2039,7 +2095,7 @@ else func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= - test "x$func_split_equals_lhs" = "x$1" \ + test "x$func_split_equals_lhs=" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals @@ -2065,7 +2121,7 @@ else { $debug_cmd - func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt @@ -2107,31 +2163,44 @@ func_usage_message () # func_version # ------------ # Echo version message to standard output and exit. +# The version message is extracted from the calling file's header +# comments, with leading '# ' stripped: +# 1. First display the progname and version +# 2. Followed by the header comment line matching /^# Written by / +# 3. Then a blank line followed by the first following line matching +# /^# Copyright / +# 4. Immediately followed by any lines between the previous matches, +# except lines preceding the intervening completely blank line. +# For example, see the header comments of this file. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' - /(C)/!b go - :more - /\./!{ - N - s|\n# | | - b more - } - :go - /^# Written by /,/# warranty; / { - s|^# || - s|^# *$|| - s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| - p + /^# Written by /!b + s|^# ||; p; n + + :fwd2blnk + /./ { + n + b fwd2blnk } - /^# Written by / { - s|^# || - p + p; n + + :holdwrnt + s|^# || + s|^# *$|| + /^Copyright /!{ + /./H + n + b holdwrnt } - /^warranty; /q' < "$progpath" + + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + G + s|\(\n\)\n*|\1|g + p; q' < "$progpath" exit $? } @@ -2141,12 +2210,35 @@ func_version () # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. -scriptversion='(GNU libtool) 2.4.6' +scriptversion='(GNU libtool) 2.5.4' + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + year=`date +%Y` + + cat < +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. + +Originally written by Gordon Matzigkeit, 1996 +(See AUTHORS for complete contributor listing) +EOF + + exit $? +} # func_echo ARG... @@ -2169,18 +2261,6 @@ func_echo () } -# func_warning ARG... -# ------------------- -# Libtool warnings are not categorized, so override funclib.sh -# func_warning with this simpler definition. -func_warning () -{ - $debug_cmd - - $warning_func ${1+"$@"} -} - - ## ---------------- ## ## Options parsing. ## ## ---------------- ## @@ -2192,19 +2272,23 @@ usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: - --config show all configuration variables - --debug enable verbose shell tracing - -n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --mode=MODE use operation mode MODE - --no-warnings equivalent to '-Wnone' - --preserve-dup-deps don't remove duplicate dependency libraries - --quiet, --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - -v, --verbose print more informational messages than default - --version print version information - -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] - -h, --help, --help-all print short, long, or detailed help message + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information + --finish use operation '--mode=finish' + --mode=MODE use operation mode MODE + --no-finish don't update shared library cache + --no-quiet, --no-silent print default informational messages + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --reorder-cache=DIRS reorder shared library cache for preferred DIRS + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. @@ -2237,13 +2321,13 @@ include the following information: compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname $scriptversion Debian-2.4.6-2.1 + version: $progname $scriptversion automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . -GNU libtool home page: . -General help using GNU software: ." +GNU libtool home page: . +General help using GNU software: ." exit 0 } @@ -2293,7 +2377,7 @@ fi # a configuration failure hint, and exit. func_fatal_configuration () { - func__fatal_error ${1+"$@"} \ + func_fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } @@ -2433,8 +2517,11 @@ libtool_options_prep () opt_dry_run=false opt_help=false opt_mode= + opt_reorder_cache=false opt_preserve_dup_deps=false opt_quiet=false + opt_finishing=true + opt_warning= nonopt= preserve_args= @@ -2474,8 +2561,6 @@ libtool_options_prep () func_quote eval ${1+"$@"} libtool_options_prep_result=$func_quote_result fi - - $_G_rc_lt_options_prep } func_add_hook func_options_prep libtool_options_prep @@ -2526,14 +2611,18 @@ libtool_parse_options () clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error - *) func_error "invalid argument for $_G_opt" + *) func_error "invalid argument '$1' for $_G_opt" exit_cmd=exit - break ;; esac shift ;; + --no-finish) + opt_finishing=false + func_append preserve_args " $_G_opt" + ;; + --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" @@ -2549,6 +2638,24 @@ libtool_parse_options () func_append preserve_args " $_G_opt" ;; + --reorder-cache) + opt_reorder_cache=true + shared_lib_dirs=$1 + if test -n "$shared_lib_dirs"; then + case $1 in + # Must begin with /: + /*) ;; + + # Catch anything else as an error (relative paths) + *) func_error "invalid argument '$1' for $_G_opt" + func_error "absolute paths are required for $_G_opt" + exit_cmd=exit + ;; + esac + fi + shift + ;; + --silent|--quiet) opt_quiet=: opt_verbose=false @@ -2581,12 +2688,22 @@ libtool_parse_options () func_quote eval ${1+"$@"} libtool_parse_options_result=$func_quote_result fi - - $_G_rc_lt_parse_options } func_add_hook func_parse_options libtool_parse_options +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + if $opt_warning; then + $debug_cmd + $warning_func ${1+"$@"} + fi +} + # libtool_validate_options [ARG]... # --------------------------------- @@ -2603,10 +2720,10 @@ libtool_validate_options () # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" - case $host in + case $host_os in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 - *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + cygwin* | mingw* | windows* | pw32* | cegcc* | solaris2* | os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; @@ -2938,7 +3055,7 @@ EOF # func_convert_core_file_wine_to_w32 ARG # Helper function used by file name conversion functions when $build is *nix, -# and $host is mingw, cygwin, or some other w32 environment. Relies on a +# and $host is mingw, windows, cygwin, or some other w32 environment. Relies on a # correctly configured wine environment available, with the winepath program # in $build's $PATH. # @@ -2970,9 +3087,10 @@ func_convert_core_file_wine_to_w32 () # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. +# $host is mingw, windows, cygwin, or some other w32 environment. Relies on a +# correctly configured wine environment available, with the winepath program +# in $build's $PATH. Assumes ARG has no leading or trailing path separator +# characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. @@ -3115,6 +3233,15 @@ func_convert_path_front_back_pathsep () # end func_convert_path_front_back_pathsep +# func_convert_delimited_path PATH ORIG_DELIMITER NEW_DELIMITER +# Replaces a delimiter for a given path. +func_convert_delimited_path () +{ + converted_path=`$ECHO "$1" | $SED "s#$2#$3#g"` +} +# end func_convert_delimited_path + + ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## @@ -3449,6 +3576,65 @@ func_dll_def_p () } +# func_reorder_shared_lib_cache DIRS +# Reorder the shared library cache by unconfiguring previous shared library cache +# and configuring preferred search directories before previous search directories. +# Previous shared library cache: /usr/lib /usr/local/lib +# Preferred search directories: /tmp/testing +# Reordered shared library cache: /tmp/testing /usr/lib /usr/local/lib +func_reorder_shared_lib_cache () +{ + $debug_cmd + + case $host_os in + openbsd*) + get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` + func_convert_delimited_path "$get_search_directories" ':' '\ ' + save_search_directories=$converted_path + func_convert_delimited_path "$1" ':' '\ ' + + # Ensure directories exist + for dir in $converted_path; do + # Ensure each directory is an absolute path + case $dir in + /*) ;; + *) func_error "Directory '$dir' is not an absolute path" + exit $EXIT_FAILURE ;; + esac + # Ensure no trailing slashes + func_stripname '' '/' "$dir" + dir=$func_stripname_result + if test -d "$dir"; then + if test -n "$preferred_search_directories"; then + preferred_search_directories="$preferred_search_directories $dir" + else + preferred_search_directories=$dir + fi + else + func_error "Directory '$dir' does not exist" + exit $EXIT_FAILURE + fi + done + + PATH="$PATH:/sbin" ldconfig -U $save_search_directories + PATH="$PATH:/sbin" ldconfig -m $preferred_search_directories $save_search_directories + get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` + func_convert_delimited_path "$get_search_directories" ':' '\ ' + reordered_search_directories=$converted_path + + $ECHO "Original: $save_search_directories" + $ECHO "Reordered: $reordered_search_directories" + exit $EXIT_SUCCESS + ;; + *) + func_error "--reorder-cache is not supported for host_os=$host_os." + exit $EXIT_FAILURE + ;; + esac +} +# end func_reorder_shared_lib_cache + + # func_mode_compile arg... func_mode_compile () { @@ -3627,7 +3813,7 @@ func_mode_compile () # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) + cygwin* | mingw* | windows* | pw32* | os2* | cegcc*) pic_mode=default ;; esac @@ -3836,7 +4022,8 @@ This mode accepts the following additional options: -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler + -Wc,FLAG + -Xcompiler FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. @@ -3942,6 +4129,8 @@ The following components of LINK-COMMAND are treated specially: -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wa,FLAG + -Xassembler FLAG pass linker-specific FLAG directly to the assembler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) @@ -4018,6 +4207,12 @@ if $opt_help; then fi +# If option '--reorder-cache', reorder the shared library cache and exit. +if $opt_reorder_cache; then + func_reorder_shared_lib_cache $shared_lib_dirs +fi + + # func_mode_execute arg... func_mode_execute () { @@ -4202,7 +4397,7 @@ func_mode_finish () fi fi - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs" && $opt_finishing; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. @@ -4227,6 +4422,12 @@ func_mode_finish () for libdir in $libdirs; do $ECHO " $libdir" done + if test "false" = "$opt_finishing"; then + echo + echo "NOTE: finish_cmds were not executed during testing, so you must" + echo "manually run ldconfig to add a given test directory, LIBDIR, to" + echo "the search path for generated executables." + fi echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" @@ -4463,8 +4664,15 @@ func_mode_install () func_append dir "$objdir" if test -n "$relink_command"; then + # Strip any trailing slash from the destination. + func_stripname '' '/' "$libdir" + destlibdir=$func_stripname_result + + func_stripname '' '/' "$destdir" + s_destdir=$func_stripname_result + # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that @@ -4501,7 +4709,7 @@ func_mode_install () 'exit $?' tstripme=$stripme case $host_os in - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | mingw* | windows* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= @@ -4614,7 +4822,7 @@ func_mode_install () # Do a test to see if this is really a libtool program. case $host in - *cygwin* | *mingw*) + *cygwin* | *mingw* | *windows*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result @@ -4842,7 +5050,7 @@ extern \"C\" { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in - *cygwin* | *mingw* | *cegcc* ) + *cygwin* | *mingw* | *windows* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; @@ -4854,7 +5062,7 @@ extern \"C\" { eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in - *cygwin* | *mingw* | *cegcc* ) + *cygwin* | *mingw* | *windows* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; @@ -4868,7 +5076,7 @@ extern \"C\" { func_basename "$dlprefile" name=$func_basename_result case $host in - *cygwin* | *mingw* | *cegcc* ) + *cygwin* | *mingw* | *windows* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" @@ -4894,8 +5102,16 @@ extern \"C\" { eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + case $host in + i[3456]86-*-mingw32*) + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + ;; + *) + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/__nm_//' >> '$nlist'" + ;; + esac } else # not an import lib $opt_dry_run || { @@ -5043,7 +5259,7 @@ static const void *lt_preloaded_setup() { # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in - *cygwin* | *mingw* | *cegcc* ) + *cygwin* | *mingw* | *windows* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` @@ -5119,7 +5335,7 @@ func_win32_libid () *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || @@ -5386,7 +5602,7 @@ func_extract_archives () # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw +# incorporate the script contents within a cygwin/mingw/windows # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. @@ -5394,7 +5610,7 @@ func_extract_archives () # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is -# the $objdir directory. This is a cygwin/mingw-specific +# the $objdir directory. This is a cygwin/mingw/windows-specific # behavior. func_emit_wrapper () { @@ -5519,7 +5735,7 @@ func_exec_program_core () " case $host in # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) + *-*-mingw* | *-*-windows* | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 @@ -5587,7 +5803,7 @@ func_exec_program () file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done - # Usually 'no', except on cygwin/mingw when embedded into + # Usually 'no', except on cygwin/mingw/windows when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then @@ -5719,7 +5935,7 @@ EOF #endif #include #include -#ifdef _MSC_VER +#if defined _WIN32 && !defined __GNUC__ # include # include # include @@ -5744,7 +5960,7 @@ EOF /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ -int _putenv (const char *); +_CRTIMP int __cdecl _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ @@ -5942,7 +6158,7 @@ main (int argc, char *argv[]) { EOF case $host in - *mingw* | *cygwin* ) + *mingw* | *windows* | *cygwin* ) # make stdout use "unix" line endings echo " setmode(1,_O_BINARY);" ;; @@ -6045,7 +6261,7 @@ EOF EOF case $host_os in - mingw*) + mingw* | windows*) cat <<"EOF" { char* p; @@ -6087,7 +6303,7 @@ EOF EOF case $host_os in - mingw*) + mingw* | windows*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ newargz = prepare_spawn (newargz); @@ -6506,7 +6722,7 @@ lt_update_lib_path (const char *name, const char *value) EOF case $host_os in - mingw*) + mingw* | windows*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). @@ -6681,7 +6897,7 @@ func_mode_link () $debug_cmd case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra @@ -6705,6 +6921,7 @@ func_mode_link () finalize_command=$nonopt compile_rpath= + compile_rpath_tail= finalize_rpath= compile_shlibpath= finalize_shlibpath= @@ -6745,10 +6962,12 @@ func_mode_link () xrpath= perm_rpath= temp_rpath= + temp_rpath_tail= thread_safe=no vinfo= vinfo_number=no weak_libs= + rpath_arg= single_module=$wl-single_module func_infer_tag $base_compile @@ -7011,7 +7230,7 @@ func_mode_link () case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) - func_fatal_error "only absolute run-paths are allowed" + func_fatal_error "argument to -rpath is not absolute: $arg" ;; esac if test rpath = "$prev"; then @@ -7038,6 +7257,13 @@ func_mode_link () prev= continue ;; + xassembler) + func_append compiler_flags " -Xassembler $qarg" + prev= + func_append compile_command " -Xassembler $qarg" + func_append finalize_command " -Xassembler $qarg" + continue + ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" @@ -7180,7 +7406,7 @@ func_mode_link () ;; esac case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; @@ -7200,7 +7426,7 @@ func_mode_link () -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; @@ -7208,7 +7434,7 @@ func_mode_link () # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; @@ -7228,7 +7454,7 @@ func_mode_link () esac elif test X-lc_r = "X$arg"; then case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc_r directly, use -pthread flag. continue ;; @@ -7251,16 +7477,29 @@ func_mode_link () # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) + # -q